プライベートな連絡先の最初の情報
送料メール:
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
$
$()
使用法シェルの特別な変数。パラメータを渡すためにスクリプトや関数で使用されます。
次の特別な位置パラメータ変数があります。
変数 | 効果 |
---|---|
$0 | シェルスクリプトのファイル名とスクリプトのパスを取得します。 |
$n | シェルスクリプトのn番目のパラメータを取得します。nは1から9の間です。9より大きい場合、いくつかの値が返されます。{} 、のように{$10} |
$# | 実行されたシェルスクリプトの背後にあるパラメータの総数を取得します |
$* | 引用符なしでシェル スクリプトのすべてのパラメータを取得します。これは次と同等です。$@ 関数に引用符 "$*" を加えたものは次のとおりです。すべてのパラメータを単一の文字列として受け取ります |
$@ | 引用符を使用しない場合、効果は上記と同じです。すべてのパラメータを独立した文字列として受け取ります |
検索方法:man bash
、検索Special Parameters
変数 | 効果 |
---|---|
$? | 最後のコマンド実行ステータスの戻り値、0が正常、0以外が失敗 |
$$ | 現在のシェルスクリプトのプロセス番号 |
$! | 最後のバックグラウンドプロセスのPID |
$_ | 最後のコマンドの最後のパラメータを取得します |
-n
: 内容を改行せずに出力します-e
: エスケープ文字を解釈します n
: 改行r
: 入力t
:タブb
:バックスペースv
:垂直タブ文字eval ls; cd ~
exec
実行後は自動的にexit
文法:
文法 | 効果 |
---|---|
# | 先頭から最も短い一致を削除します |
## | 先頭から最長一致を削除します |
% | 最も短い一致を末尾から削除します |
%% | 末尾から最長一致を削除します |
# | 指定された文字コンテンツのインターセプト |
a*c | a で始まり、途中に任意の数の文字があり、c で終わる文字列と一致します。 |
${变量} | 戻り変数の値 |
${#变量} | 変数長、文字長を返す |
${变量:start} | 変数オフセット値の後の文字を返します。 |
${变量:start:length} | オフセット後の長さによって制限された文字を抽出する |
${变量#word} | 変数の先頭から、一致する最短の単語部分文字列を削除します。 |
${变量##word} | 変数の先頭から、最も長く一致する単語を削除します |
${变量%word} | 変数の末尾から一致する最短の単語部分文字列を削除します。 |
${变量%%word} | 変数の末尾から最長一致する単語の部分文字列を削除します。 |
${变量/pattern/string} | 最初に一致したパターンを文字列に置き換えます |
${变量//pattern/string} | すべてのパターンを文字列に置き換えます |
操作例:ファイル名を削除
# 通过⼦串的替换⽅式
snowk@SnowKYP# f=stu_102999_1_finished.jpg
# 变量的⼦串功能,去掉后缀
snowk@SnowKYP# echo ${f//_finished/}
stu_102999_1.jpg
# 利⽤变量的反引⽤替换⽂件名
snowk@SnowKYP# mv $f `echo ${f//_finished/}`
# 剩下的⽂件,利⽤循环操作
# 找出剩下所有需要替换的jpg⽂件
snowk@SnowKYP# ls *fin*.jpg
stu_102999_2_finished.jpg stu_102999_3_finished.jpg stu_102999_4_finished.jpg
stu_102999_5_finished.jpg
# 写shell循环代码,循环操作
# 去掉所有jpg⽂件的_finished后缀
snowk@SnowKYP# for file in `ls *fin*.jpg`;do mv $file `echo ${file//_finished/}`;done
snowk@SnowKYP# ls *.jpg
stu_102999_1.jpg stu_102999_2.jpg stu_102999_3.jpg stu_102999_4.jpg stu_102999_5.jpg
parameter,参数,范围
${parameter:-word}
:もしparameter
変数値が空です、戻りますword
弦${parameter:=word}
:もしparameter
変数値が空の場合、word
変数値を置き換えてその値を返します${parameter:?word}
:もしparameter
変数値が空です。word
としてstderr
出力、それ以外の場合は変数値を出力 ${parameter:+word}
:もしparameter
変数値が空の場合は何もしません。それ以外の場合は、word
戻る# 原脚本命令,有bug,有歧义
find ${file_path} -name '*.tar.gz' -type f -mtime +7 | xargs rm -f
# 修正后的脚本命令
# 如果有bug起义,就在当前目录搜索并执行删除
find ${file_path:=/tmp} -name '*.tar.gz' -type f -mtime +7 | xargs rm -f