読者です 読者をやめる 読者になる 読者になる

すがブロ

sugamasaoのhatenablogだよ

おれが使うシェル操作まとめ

シェルでの文字列操作メモ

  • 文字列の長さを調べる
STR="TEST"
echo ${#STR}
# 4
  • 文字列から特定の箇所の文字を抜き出す
STR="TEST"
echo ${STR:0:2}
# TE

ただし、この書き方は Bash 2.0 以降のみ可能。代替コマンドとして GNU expr コマンドなら以下を使う。*1
ちなみに、自宅の Mac + zsh 環境だと上の方法も下の方法も使えない・・・! 何か他に手軽に substr 的な事ができるコマンドってあるかしら。

STR="TEST"
expr substr ${STR} 1 2
# TE
  • 値が無かったらデフォルト値を設定
set ${STR1:="AAA"}
echo ${STR1}
# AAA

set ${STR1:="BBB"}
echo ${STR1}
# AAA ←既に AAA が入っているので BBB はセットされない

よく使うヤツ

${1}, ${2}...

引数すべての場合はこう

${@}
${0}
dirname ${0}
  • 左辺のコマンドが成功したら右辺のコマンドを実行
command && command
  • 左辺のコマンドが失敗したら右辺のコマンドを実行
command || command

繰り返し文

  • ディレクトリ内のファイルに対して処理をする
for LIST in `ls`; do
  echo ${LIST};
done
  • 指定回数分処理する(いわゆる普通の for 文的な使い方)
    • seq コマンドを使用する場合:redhat系?
for i in `seq 1 5`; do
  echo ${i}
end
# 1
# 2
# 3
# 4
# 5
    • jot コマンドを使用する場合:BSD系(Mac含む)

seq とは初期値と回数の場所が逆になっていることに注意

for i in `jot 5 1`; do
  echo ${i}
end
# 1
# 2
# 3
# 4
# 5

文字列操作や for での繰り返し処理は覚えておくとちょっとした処理を手早くできてとても良いですね。
特に、seq や jot での繰り返しはつい最近しったのですが、使う局面が多いと思います。

続き書きました

id:seiunsky:20081103:1225729727

*1:この際 expr では文字列の最初の文字を 1 から数える事に注意