shellスクリプト-システム変数と変数(読み取り専用削除を使用する定義)

14137 ワード

shellでよく見られるシステム変数の解析
Shellスクリプトを実行するときに、スクリプトにパラメータを渡すことができます.スクリプト内の取得パラメータのフォーマットは$nです.n 1つの数字を表し、1はスクリプトを実行する最初のパラメータ、2はスクリプトを実行する2番目のパラメータです.このように......注意して、$10は10番目のパラメータを取得することはできません.10番目のパラメータを取得するには${10}が必要です.n>=10の場合、${n}を使用してパラメータを取得する必要があります.
パラメータ処理
説明
$#
スクリプトに渡されるパラメータの数
$*
スクリプトに渡されるすべてのパラメータを1つの単一文字列で表示します.「$*」が「」で囲まれている場合、すべてのパラメータを「$1$2...$n」として出力します.
$$
スクリプト実行の現在のプロセスID番号
$!
バックグラウンドで実行される最後のプロセスのID番号
$@
$*と同じですが、使用時に引用符を付け、引用符で各パラメータを返します.たとえば、$@"を"""""""""""$1"$2"..."$n"としてすべてのパラメータを出力します.
$-
Shellが使用している現在のオプションを表示します.setコマンド機能と同じです.
$?
最後のコマンドの終了ステータスが表示されます.0はエラーがないことを示し、他の値はエラーがあることを示します.
$*と$@の違い:
同じ点:すべてのパラメータが参照されます.
異なる点:二重引用符でのみ表示されます.スクリプト実行時に3つのパラメータ1、2、3が書かれていると仮定すると、"*"は"1 2 3"(パラメータが渡された)に等価であり、"@"は"1""2""3"(パラメータが3つ渡された)に等価である.
#!/bin/bash
# author:    
# url:www.runoob.com

echo "-- \$*    ---"
for i in "$*"; do
    echo $i
done

echo "-- \$@    ---"
for i in "$@"; do
    echo $i
done

スクリプトを実行し、次のように出力します.
$ chmod +x test.sh 
$ ./test.sh 1 2 3
-- $*    ---
1 2 3
-- $@    ---
1
2
3

#!/bin/shecho "\$0"= "$0"echo "\$1"= "$1"echo "\$2"= "$2"echo "\$3"= "$3"echo "************"echo "\$9"= "$9"echo "\${9}"= "${9}"echo "\$10"= "$10"echo "\${10}"= "${10}"echo "************"echo "\$?"= "$?"echo "\$*"= "$*"echo "\$#"= "$#"echo "\$@"= "$@"echo "\$!"= "$!"echo "\$$"= "$$"echo "************"echo "\$UID ="$UIDecho "\$PWD ="$PWD
[root@J01051386 shell]# sh variable.sh 1 2 3 4 5 6 7 8 9 15$0 = variable.sh$1 = 1$2 = 2$3 = 3************$9 = 9${9} = 9$10 = 10${10} = 15************$? = 0$* = 1 2 3 4 5 6 7 8 9 15$# = 10$@ = 1 2 3 4 5 6 7 8 9 15$! = $$ = 4402************$UID = 0$PWD =/root/Test_20180418/shell
現在のshellバージョンの表示
$ echo $SHELL
出力:/bin/bash
$ echo $0
出力:bash
$ echo $PATH
パスの表示
shell変数の定義と使用
#        
(1)CLICA_PATH="/etc/pki/CA"
(2)(umask 077;openssl genrsa -out $CLICA_PATH/private/CA.key) 
#        
#             ,     ,                      。for skill in Ada Coffe Action Java;
do echo "I am good at ${skill}Script"done
#               readonly
#!/bin/bash
myUrl="http://www.w3cschool.cc"
readonly myUrl
myUrl="http://www.runoob.com"
#     unset variable_name              。unset           。
#!/bin/sh
myUrl="http://www.runoob.com"
unset myUrl
echo $myUrl

変数名と等号の間にスペースを置くことはできません.これは、よく知っているすべてのプログラミング言語とは異なる可能性があります.また、変数名の命名は、次のルールに従う必要があります.
ネーミングには英字、数字、下線しか使用できません.最初の文字は数字で始まることはできません.
中央にスペースは使用できません.下線()を使用できます.
句読点は使用できません.
bashのキーワードは使用できません(helpコマンドで予約キーワードを表示できます)変数を割り当てるには、次の手順に従います.
var=value varは変数名valueが変数の値です.
var=valueはvar=valueとは異なり、前者は等しい後者は賦値である
例:#!/bin/sh
var="value"#変数varに値を割り当てる注意=前後にスペースがありません
echo$var#変数名の前に$接頭辞を付けると変数の内容が印刷されます
echo${var}#は、1行の印刷結果と同じです.
参照リンク:http://www.runoob.com/linux/linux-shell-passing-arguments.html
                 http://www.runoob.com/linux/linux-shell-func.html