linux shell 編程 10 $0 $1 $2 $# $* $@ $! $$ $?

$# 是傳給腳本的參數個數
$0 是腳本自己的名字
$1 是傳遞給該shell腳本的第一個參數
$2 是傳遞給該shell腳本的第二個參數
$@ 是傳給腳本的全部參數的列表
$* 是以一個單字符串顯示全部向腳本傳遞的參數,與位置變量不一樣,參數可超過9個
$$ 是腳本運行的當前進程ID號
$! 是最後運行的後臺Process的PID
$? 是顯示最後命令的退出狀態,0表示沒有錯誤,其餘表示有錯誤


腳本:java

#!/bin/bash
# args  test
echo "title: $0"
echo "total args: $#"
echo "first args: $1"
echo "second args: $2"
echo "all args: $@"
echo "all args: $*"
echo "currnet pid:$$"
echo "status: $?"

結果:shell

[root@localhost src]# sh java18 1 2 3
title: java18
total args: 3
first args: 1
second args: 2
all args: 1 2 3
all args: 1 2 3
currnet pid:4005
status: 0

-----------------------------------------------------------------------------------------------------
bash

區別:"@"和 "*"spa

  • 相同點:都是引用全部參數.net

  • 不一樣點:只有在雙引號中體現出來,假如腳本中運行時寫入了三個參數(1 2 3)則 「*」等價於「123」(至關於傳遞了一個參數)而「@」 等價於傳遞了「1」 「2」 「3」 (傳遞了三個參數)code

3"進程

腳本:字符串

#!/bin/bash
# total args 
a=$#
for((i=0;i<$a;i++))
do
echo "$i"
done

echo "---- $ @----"
for var in $@
do
echo "$var"
done

echo "----$ *----"
for va in $*
do
echo "$va"
done

echo "---- " $ @ "----"
for var1 in "$@"
do
echo "$var1"
done

echo "---"  "----"
for va1 in "$*"
do
echo "$va1"
done


運行結果:get

[root@localhost src]# sh java19 1 2 3
0
1
2
---- $ @----
1
2
3
----$ *----
1
2
3
----  $ @ ----
1
2
3
--- ----
1 2 3

it

相關文章
相關標籤/搜索