1. sudo執行指令碼找不到變數
當普通使用者下,設定並export乙個變數,然後利用sudo執行echo命令,能得到變數的值,但是如果把echo命令寫入指令碼,然後再sudo執行指令碼,就找不到變數,未能獲取到值,如題情況如下:
$ cat demo.shecho
$var1
$ var1=a1
$ export var1 # export 變數
$ sudo
echo
$var1 # sudo執行echo命令,返回變數值
>>>a1
$ sudo bash demo.sh
# sudo執行指令碼,不能獲取變數值
$ bash demo.
sh# 普通使用者執行指令碼,返回變數值
>>>a1
# 解決方案
$ sudo -e bash demo.sh # sudo 帶-e引數,可以獲取變數值
>>>a1
具體原因還有其他解決方案見
2. 替換變數中的字元
$ branch_name=feature/ss_tracking$ echo
$branch_name
>>>feature/ss_tracking
$ echo $
>>>feature-ss_tracking
3. sed遍歷替換
#linuxfind features -type f |while read file;do
sed -i '
s/context.feature.mongo/context.mongo/g
' $file;done
#mac
find features -type f |while read file;do
sed -i ""
's/context.feature.mongo/context.mongo/g
' $file;done
常用shell彙總
1 查詢並刪除 data這個目錄7天前建立的檔案 root ansible learngit find data ctime 7 exec rm fr root ansible learngit find data ctime 7 xargs rm fr root ansible learngit ...
Shell 條件判斷彙總
b file 若檔案存在且是乙個塊特殊檔案,則為真 c file 若檔案存在且是乙個字元特殊檔案,則為真 d file 若檔案存在且是乙個目錄,則為真 e file 若檔案存在,則為真 f file 若檔案存在且是乙個規則檔案,則為真 g file 若檔案存在且設定了sgid位的值,則為真 h fi...
shell 特殊變數彙總
引數個數 0程式的名稱 1傳給函式的第1個引數 2傳給函式的第2個引數 3傳給函式的第3個引數 9 傳給函式的第9個引數,9往後的必須將數字 起來 傳給函式的第10個引數 傳給函式的第11個引數 n傳給函式的第n個引數 函式或者程式正常退出返回0,否則返回1 傳遞給程式的所有引數組成的字串 函式的引...