1、移動變數
指令碼 sh05.sh
#!/bin/bash# program
# program shows the effect of
shift
function
# history:
# 2015/9/6
zengdp first release
path=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export path
echo
"total parameter number is ==> $#
"echo
"you whole parameter is ==> '$@'
"shift
echo
"total parameter number is ==> $#
"echo
"you whole parameter is ==> '$@'
"shift
3echo
"total parameter number is ==> $#
"echo
"you whole parameter is ==> '$@'
"
執行 sh sh05.sh one two three four five six
得到
total parameter number is ==> 6you whole parameter is ==> '
one two three four five six
'total parameter number is ==> 5
you whole parameter is ==> '
two three four five six
'total parameter number is ==> 2
you whole parameter is ==> '
five six
'
光看結果你就可以知道啦,那個 shift 會移動變數,而且 shift 後面可以接數字,代表拿掉最前面的幾個引數的意思。 上面的執行結果中,第一次進行 shift 後他的顯示情況是『 one two three four five six』,所以就剩下五個啦!第二次直接拿掉三個,就變成『 two three four five six 』啦!
2、 當使用shift移動乙個變數時,使用while輸出第乙個變數,從而輸出在輸入時所有的變數
檔名為 test13.sh
1 #!/bin/bash2 # demostrating the shift
command
34 count=1
5while [ -n "$1"
]6do7
echo
"parameter #$count=$1
"8 count=$[$count + 1]9
shift
10done
指令碼執行乙個while迴圈,測試第乙個引數的長度,當第乙個引數值長度為0時,結束迴圈,測試第乙個引數後,使用shift命令將所有引數左移乙個位置
sh test13.sh rich barbara katie jessica
輸出為:
parameter #1=richparameter #
2=barbara
parameter #
3=katie
parameter #
4=jessica
3、從引數中分離選項
執行shell指令碼時經常會遇到既需要使用選項有需要使用引數的情況,在linux中的標準方式是通過特殊字元嗎將二者分開,這個特殊字元嗎告訴指令碼選項結束和普通引數開始的位置
對於linux,這個特殊字元嗎就是雙破折號(--),shell使用雙破折號知識選項列表的結束,發現雙破只好後,指令碼就能夠安全的將剩餘的命令列引數作為引數而不是選項處理
檔名為 test16.sh
1 #!/bin/bash2# extracting options and parameters34
while [ -n "$1"
]5do6
case"$1
"in7 -a) echo
"found the -a option";;
8 -b) echo
"found the -b option";;
9 -c) echo
"found the -c option";;
10 --) shift
11break ;;
12 *) echo
"$1 is not an option";;
13esac
14shift
15done
1617 count=1
18for param in
$@19
do20
echo
"parameter #$count: $param
"21 count=$[ $count + 1]22
done
這個指令碼使用break命令使得遇到雙破折號時從while迴圈中跳出,因為提前從迴圈中跳出,所以需要保證加入乙個shift命令將雙破折號從引數變數中丟棄
第乙個測試,嘗試使用普通選項和引數集執行指令碼
sh test16.sh -a -b -c test1 test2 test3
輸出為:
found the -a optionfound the -b option
found the -c option
test1 is not an option
test2 is not an option
test3 is not an option
第二次測試,使用雙破折號將命令列中選項和引數分開
sh test16.sh -a -b -c -- test1 test2 test3
輸出結果為
found the -a optionfound the -b option
found the -c option
parameter #
1: test1
parameter #
2: test2
parameter #
3: test3
這時可以看到輸出的結果中,因為識別到'--'符號,便跳出了while迴圈,然後使用下乙個迴圈中輸出剩下的變數
shift 造成引數變數號碼偏移
指令碼後面所接的變數是否能夠進行偏移 shift 呢?什麼是偏移啊?我們直接以底下的範例來說明好了,用範例說明比較好解釋!bin bash echo total parameter number is echo your whole parameter is echo e you ll shift ...
shift 造成引數變數號碼偏移
指令碼後面所接的變數是否能夠進行偏移 shift 呢?什麼是偏移啊?我們直接以底下的範例來說明好了,用範例說明比較好解釋!bin bash echo total parameter number is echo your whole parameter is echo e you ll shift ...
shift函式是對資料進行移動的操作
shift函式是對資料進行移動的操作,假如現在有乙個dataframe資料df,如下所示 dataframe.shift periods 1,freq none,axis 0 引數periods 型別為int,表示移動的幅度,可以是正數,也可以是負數,預設值是1,1就表示移動一次,注意這裡移動的都是...