./script argument
例子: 顯示檔名稱指令碼
./show.sh file1.txtcat show.sh
#!/bin/bash
cat $1
第乙個引數 : $1,第二個引數 : $2
例子 : 指令碼會複製檔案(arg1) 到目標位址(arg2)
./copy.sh file1.txt /tmp/cat copy.sh
#!/bin/bash
cp $1 $2
$#
$0
$?
tail -1
head -1
awk 『『
awk 『『
將 -xv 引數加到 #!/bin/bash 後例子:#!/bin/bash –xv
function example
v1="hello"v2="world"
v3=$v1+$v2
echo $v3
輸出 hello+world
v1=1v2=2
v3=$v1+$v2
echo $v3
輸出 3
if [ -f /var/log/messages ]then
echo "file exists"
fi
for 迴圈 :for i in $( ls ); do
echo item: $i
done
while 迴圈 :
#!/bin/bash
counter=0
while [ $counter -lt 10 ]; do
echo the counter is $counter
let counter=counter+1
done
until 迴圈 :
#!/bin/bash
counter=20
until [ $counter -lt 10 ]; do
echo counter $counter
let counter-=1
done
這一行說明要使用的 shell。#!/bin/bash 表示指令碼使用 /bin/bash。對於 python 指令碼,就是 #!/usr/bin/python。(lctt譯註:這一行稱之為釋伴行
。)
head -10 file|tail -1
#
0
使變數在子 shell 中可用。
在指令碼後面新增 「&」。
使指令碼所有者擁有可執行許可權。
重定向輸出流到檔案或另乙個流。
& – 希望指令碼在後台執行的時候使用它&& – 當前乙個指令碼成功完成才執行後面的命令/指令碼的時候使用它
當條件滿足時需要執行多條命令的時候。
my name is $name
#
variable
『 – 當我們不希望把變數轉換為值的時候使用它。」 – 會計算所有變數的值並用值代替。
在指令碼檔案中新增 「exec >log.txt 2>&1″ 命令。
echo $x - 起始位置
y - 長度
例子: variable="my name is petras, and i am developer."
echo $ # 會顯示 petras
echo $或 echo $
echo $或 echo $
awk -f: 『$3<100『 /etc/passwd
cat /etc/passwd|cut -d: -f4|sort|uniq -c|while read c gdo |xargs -n 2
done
ifs=":"
$
echo $
$ – 如果之前沒有給 variable 賦值則輸出 10$ – 輸出 variable 的最後 10 個字元
echo $
tr 『[:lower:]『 『[:upper:]『
wc -l /etc/passwd|cut -d」 」 -f1 或者 cat /etc/passwd|wc -l
set $echo $#
export variable
ls -d ?[ab]*
c=$((a+b))或 c=`expr $a + $b`
或 c=`echo "$a+$b"|bc`
echo $string|tr -d " "
item="car"; echo "i like $s"
for i in ; do echo $i; done或 for (( i=0; i<=100; i=i+3 )); do echo "welcome $i times"; done
echo $*或 echo $@
[ $a == $b ] – 用於字串比較[ $a -eq $b ] – 用於數字比較
= – 用於為變數複製== – 用於字串比較
[ $a -gt 12 ]
[ $b -le 12 ]
[[ $string == abc* ]]
[[ $string == abc* ]] – 檢查字串是否以字母 abc 開頭[[ $string == "abc" ]] – 檢查字串是否完全等於 abc
egrep "^ab|^xy" /etc/passwd|cut -d: -f1
後台最近執行命令的 pid.
前台最近命令的結束狀態。
echo $$
echo $#
$* – 以乙個字串形式輸出所有傳遞到指令碼的引數$@ – 以 $ifs 為分隔符列出所有傳遞到指令碼中的引數
array=("hi" "my" "name" "is")
echo $
echo $
echo $
unset array[2]
array[333]="new_element"
a) 通過引數
./script param1 param2
b) 通過 read 命令
read -p "destination backup server : " desthost
/usr/bin/expect << eodspawn rsync -ar $ $:$
expect "*?assword:*"
send "$/r"
expect eof
eod
經典shell面試題整理
問題 下面是乙個 etc passwd檔案的部分內容。題目要求取出shell並統計次數,shell是指後面的 bin bash,sbin nologin等,如下面 bin bash出現12次,sbin nologin出現3次。plain view plain copy hyn x 525 500 h...
經典shell面試題整理
一 取出 etc passwd檔案中shell出現的次數 問題 下面是乙個 etc passwd檔案的部分內容。題目要求取出shell並統計次數,shell是指後面的 bin bash,sbin nologin等,如下面 bin bash出現12次,sbin nologin出現3次。hyn x 52...
經典面試題
1.以下三條輸出語句分別輸出什麼?char str1 abc char str2 abc const char str3 abc const char str4 abc const char str5 abc const char str6 abc cout boolalpha str1 str2 ...