毎日shellを少し勉強します:変数の基本的な操作
6645 ワード
文書ディレクトリ shell変数の定義 定義変数 変数命名仕様 変数の使用 文字列の動作 単引用符、二重引用符 その他の一般的な操作 文字列長 を取得する.文字列 を切り取る文字列位置 を取得する.
shell変数の定義
変数の定義変数を定義するときは変数名をそのまま使えばよい、 を付ける必要はない.変数名と変数値、等号の間の
変数ネーミング仕様の名前は英字、数字、下線のみ使用でき、頭文字は数字で始まる は使用できません.システム予約キーワード は使用できません.
コマンド#コマンド#
意味
!
予約語、論理非
:
何もせずにパラメータ展開のみ
.
ファイルを読み込みshellで実行
alias
コマンドまたはコマンドラインエイリアスの設定
bg
ジョブをバックグラウンドで実行
bind
キーワードシーケンスをreadline関数またはマクロにバンドルする
break
予約語、for、while、until、selectループからジャンプ
builtin
コマンドの組み込みコマンドフォーマットを呼び出し、同じ名前の関数を無効にします.または同名の拡張コマンド
case
予約語、複数選択
cd
現在の作業ディレクトリの切り替え
command
内部建設と外部命令を探し出す.同じ名前の関数ではなく組み込みコマンドを探します
continue
ワードを保持し、次のfor、while、until、selectサイクルに到達
declare
変数定義変数属性の宣言
dirs
現在保存されているリストを表示
disown
リストからジョブを削除
do
保持ワード、for、while、until、selectループの一部
done
保持ワード、for、while、until、selectループの一部
echo
印刷パラメータ
elif
予約ワード、if構造の一部
else
予約ワード、if構造の一部
enable
組み込みコマンドのオン/オフ
esac
予約語、caseの一部
eval
パラメータをコマンドとして再処理
exec
shellの代わりに特定のプログラムを使用するか、shellのI/Oを変更します.
exit
shellを終了
export
変数を環境変数として宣言
fc
履歴コマンドとともに実行
fg
ジョブをバックグラウンドで実行
fi
リザーブワード、ifループの一部
for
予約ワード、forループの一部
function
関数の定義
getops
コマンドラインオプションの操作
hash
コマンドのパス名を記録して指定
help
組み込みコマンドのヘルプ情報を表示
history
履歴情報の表示
if
リザーブワード、ifループの一部
in
予約ワード、case、for、selectループの一部
jobs
バックグラウンドで実行されているジョブを表示
kill
プロセスに信号を送る
let
変数に算術演算を実行させる
local
ローカル変数の定義
logout
シェルからログアウト
popd
ディレクトリスタックからディレクトリをポップアップ
pushd
ディレクトリをスタックに押し込む
pwd
現在の作業ディレクトリを表示
read
標準入力から1行を読み込む
readonly
変数を読み取り専用として定義
return
関数またはスクリプトから戻る
select
予約語、生成メニュー
set
Shellオプションの設定
shift
コマンドラインパラメータの変換
suspend
シェルの実行を終了
test
評価条件式
then
予約ワード、if構造の一部
time
予約ワードは、統計されたコマンド実行時間を出力し、その出力フォーマットはTIMEFORMAT変数によって制御される
times
ShellとそのサブShellに対して、ユーザとシステムCPUの時間と
trap
キャプチャプログラムの設定
type
コマンドのソースを特定
typeset
変数を宣言し、変数属性を定義しdeclareと等価
ulimit
プロセスに使用されるリソース制限の設定と表示
umask
ファイル権限コードの設定と表示
unalias
エイリアス定義の解除
unset
変数または関数の定義を解除
until
リザーブワード、ループ構造
wait
バックグラウンドジョブの完了を待つ
while
リザーブワード、ループ構造
変数の使用
変数を使用するには、前に
カッコを付けるかどうかは、状況によって異なります.コンパイラの曖昧さを引き起こす場合は、変数境界を区別するために追加する必要があります.
変数の削除
文字列の操作
一重引用符、二重引用符
上記の比較から以下のようにまとめられています.単一引用符の文字列はすべてそのまま出力されるので、単一引用符で変数 を配置しないでください.二重引用符は変数を配置することができ、エスケープ文字 を使用することができる.
その他の一般的な操作
文字列の長さの取得
切り取り文字列
切り取りフォーマットです.これは左からカウントされます.
ここで、stringは切り取る文字列、startは開始位置(左から、0からカウント)、lenthは切り取る長さ(省略すると文字列の末尾まで)
切り取りフォーマットです.これは右からカウントされます.
このフォーマットは前のフォーマットより0-多く、これは固定的な書き方で、文字列の右からカウントされることを表しています.この方式は2点に注意しなければならない.左からカウントを開始すると、開始数字は0である.右からカウントを開始すると、開始数字は1です.カウント方向が異なり、開始数字も異なります. どの方向からカウントを開始しても、切り取り方向は左から右になります.
右から数えるのはよくわかりませんが、この手順ではまず右から1番目に左に3番目のビットを調べるのが8で、それから右に2番目のビットを数えるのが82です
文字列の場所の取得
以上のスクリプトでは、「`」は逆引用符であり、単引用符「'」ではなく、見間違えず、命令を実行する必要があるものはすべて逆引用符であり、Escキーの真下のキーである.
shell変数の定義
変数の定義
$
符号
.変数ネーミング仕様
コマンド#コマンド#
意味
!
予約語、論理非
:
何もせずにパラメータ展開のみ
.
ファイルを読み込みshellで実行
alias
コマンドまたはコマンドラインエイリアスの設定
bg
ジョブをバックグラウンドで実行
bind
キーワードシーケンスをreadline関数またはマクロにバンドルする
break
予約語、for、while、until、selectループからジャンプ
builtin
コマンドの組み込みコマンドフォーマットを呼び出し、同じ名前の関数を無効にします.または同名の拡張コマンド
case
予約語、複数選択
cd
現在の作業ディレクトリの切り替え
command
内部建設と外部命令を探し出す.同じ名前の関数ではなく組み込みコマンドを探します
continue
ワードを保持し、次のfor、while、until、selectサイクルに到達
declare
変数定義変数属性の宣言
dirs
現在保存されているリストを表示
disown
リストからジョブを削除
do
保持ワード、for、while、until、selectループの一部
done
保持ワード、for、while、until、selectループの一部
echo
印刷パラメータ
elif
予約ワード、if構造の一部
else
予約ワード、if構造の一部
enable
組み込みコマンドのオン/オフ
esac
予約語、caseの一部
eval
パラメータをコマンドとして再処理
exec
shellの代わりに特定のプログラムを使用するか、shellのI/Oを変更します.
exit
shellを終了
export
変数を環境変数として宣言
fc
履歴コマンドとともに実行
fg
ジョブをバックグラウンドで実行
fi
リザーブワード、ifループの一部
for
予約ワード、forループの一部
function
関数の定義
getops
コマンドラインオプションの操作
hash
コマンドのパス名を記録して指定
help
組み込みコマンドのヘルプ情報を表示
history
履歴情報の表示
if
リザーブワード、ifループの一部
in
予約ワード、case、for、selectループの一部
jobs
バックグラウンドで実行されているジョブを表示
kill
プロセスに信号を送る
let
変数に算術演算を実行させる
local
ローカル変数の定義
logout
シェルからログアウト
popd
ディレクトリスタックからディレクトリをポップアップ
pushd
ディレクトリをスタックに押し込む
pwd
現在の作業ディレクトリを表示
read
標準入力から1行を読み込む
readonly
変数を読み取り専用として定義
return
関数またはスクリプトから戻る
select
予約語、生成メニュー
set
Shellオプションの設定
shift
コマンドラインパラメータの変換
suspend
シェルの実行を終了
test
評価条件式
then
予約ワード、if構造の一部
time
予約ワードは、統計されたコマンド実行時間を出力し、その出力フォーマットはTIMEFORMAT変数によって制御される
times
ShellとそのサブShellに対して、ユーザとシステムCPUの時間と
trap
キャプチャプログラムの設定
type
コマンドのソースを特定
typeset
変数を宣言し、変数属性を定義しdeclareと等価
ulimit
プロセスに使用されるリソース制限の設定と表示
umask
ファイル権限コードの設定と表示
unalias
エイリアス定義の解除
unset
変数または関数の定義を解除
until
リザーブワード、ループ構造
wait
バックグラウンドジョブの完了を待つ
while
リザーブワード、ループ構造
変数の使用
変数を使用するには、前に
$
を追加するだけです.[root@hadoop-master ~]# my_name="leo825"
[root@hadoop-master ~]# echo $my_name
leo825
[root@hadoop-master ~]# echo ${my_name}
leo825
カッコを付けるかどうかは、状況によって異なります.コンパイラの曖昧さを引き起こす場合は、変数境界を区別するために追加する必要があります.
[root@hadoop-master ~]# echo "my name is ${my_name}"
my name is leo825
変数の削除
[root@hadoop-master ~]# unset my_name
[root@hadoop-master ~]# echo ${my_name}
[root@hadoop-master ~]#
文字列の操作
一重引用符、二重引用符
[root@hadoop-master ~]# my_name="leo825"
[root@hadoop-master ~]# echo ' :${my_name}'
:${my_name}
[root@hadoop-master ~]# echo " :${my_name}"
:leo825
[root@hadoop-master ~]# echo " :\"${my_name}\""
:"leo825"
上記の比較から以下のようにまとめられています.
その他の一般的な操作
文字列の長さの取得
[root@hadoop-master ~]# echo ${my_name}
leo825
[root@hadoop-master ~]# echo ${#my_name}
6
切り取り文字列
切り取りフォーマットです.これは左からカウントされます.
${string: start :length}
ここで、stringは切り取る文字列、startは開始位置(左から、0からカウント)、lenthは切り取る長さ(省略すると文字列の末尾まで)
[root@hadoop-master ~]# echo ${my_name}
leo825
[root@hadoop-master ~]# echo ${my_name:1:2}
eo
[root@hadoop-master ~]# echo ${my_name:1}
eo825
切り取りフォーマットです.これは右からカウントされます.
${string: 0-start :length}
このフォーマットは前のフォーマットより0-多く、これは固定的な書き方で、文字列の右からカウントされることを表しています.この方式は2点に注意しなければならない.
[root@hadoop-master ~]# echo ${my_name}
leo825
[root@hadoop-master ~]# echo ${my_name:0-3:2}
82
右から数えるのはよくわかりませんが、この手順ではまず右から1番目に左に3番目のビットを調べるのが8で、それから右に2番目のビットを数えるのが82です
文字列の場所の取得
[root@hadoop-master ~]# echo ${my_name}
leo825
[root@hadoop-master ~]# echo `expr index "$my_name" 8`
4
以上のスクリプトでは、「`」は逆引用符であり、単引用符「'」ではなく、見間違えず、命令を実行する必要があるものはすべて逆引用符であり、Escキーの真下のキーである.