shell問題彙總

2022-07-17 00:27:21 字數 1076 閱讀 5548

1. sudo執行指令碼找不到變數

當普通使用者下,設定並export乙個變數,然後利用sudo執行echo命令,能得到變數的值,但是如果把echo命令寫入指令碼,然後再sudo執行指令碼,就找不到變數,未能獲取到值,如題情況如下:

$ cat demo.sh

echo

$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遍歷替換

#linux

find 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 傳遞給程式的所有引數組成的字串 函式的引...