學習shell指令碼遇到的問題

2021-07-10 08:10:09 字數 776 閱讀 9719

16-03-07

#!/bin/bash

echo "hello world!"

存為hello.sh

在終端執行時,輸入:

./hello.sh

報錯-bash: ./hello.sh: permission denied

檢視文字許可權為:ls -l hello.sh

-rw-r--r--  1 wangdanying  staff  32  3  7 14:42 hello.sh %沒有執行許可權

嘗試改變文字的許可權,終端輸入:

chmod 777 hello.sh %對檔案更改許可權,使所有人都有rwx許可權,即

ls -l hello.sh  

%檢視許可權

-rwxrwxrwx  1 wangdanying  staff  32  3  7 09:55 hello.sh

顯示為所有者的許可權,同組使用者的許可權,其他使用者的許可權都為rwx,這樣獲得了執行許可權

改變許可權後,指令碼執行成功。

localhost:~ wangdanying$ ./hello.sh

hello world!

或者編輯後,在終端輸入:

chmod +x ./hello.sh

ls -l hello.sh

-rwxr-xr-x  1 wangdanying  staff  895  3  7 11:56 test.sh

這樣只增加了所有者的執行許可權

./hello.sh

直接改變檔案許可權,即可執行成功。

遇到的常用shell指令碼

set e 執行的時候如果出現了返回值為非零,整個指令碼就會立即退出 set e 執行的時候如果出現了返回值為非零,將會繼續執行下面的指令碼 set u 執行的時候如果遇到不存在的變數,會報錯並停止執行 cmd1 cmd2 cmd1 和 cmd2都會被執行 cmd1 cmd2 如果 cmd1 執行成...

shell之外的地方執行指令碼遇到的問題

這周裝伺服器,系統,應用都ok後,發現有的crontab指令碼中的命令無法執行,苦思了兩天,還是以下提供的建議解決了我的問題。最近碰到乙個問題,shell指令碼直接執行和crontab設定好定時執行的結果不一樣,鬱悶.指令碼是向遠端資料庫寫入記錄,直接執行可以在遠端寫入記錄,而在crontab中定時...

shell 指令碼學習

case var in pattern statement esac case 的指令碼語法是雙分號結尾的。sed e s i.86 i386 查詢替換。sed 流編輯器 將輸入流中的i.86替換成i386。是個萬用字元。輸入流的形式可能是 管道,檔案。shell d mkdir p 指令碼的條件執...