Tag: 変数

bash周りのメモ

bash 5.1.4 で 2021/09/09 確認

文字列操作

VAR=onetwothree # 以下はこの VAR を操作するとして

表現結果意味
${VAR/two/four}onefourthree値の中の文字列 two を four に置換
$VARonetwothree(元の変数自体は変わらない)
${#VAR}11文字数
${VAR/two}onethree置換文字列を指定しないと一致文字列が削除される
${VAR#one*t}wothree値の前方からマッチする最短の文字列を取り除く
${VAR##one*t}hree値の前方からマッチする最長の文字列を取り除く
${VAR%t*ee}onetwo値の後方からマッチする最短の文字列を取り除く
${VAR%%t*ee}one値の後方からマッチする最長の文字列を取り除く
${VAR: 0: 3}one一番左の文字から 3 文字を取り出す
${VAR: 2: 3}etw2 番目の文字から 3 文字分を取り出す
${VAR: 2}etwothree第 2 パラメータを省略すると`末尾まで’の意となる
${VAR: -4: 3}hre末尾から数えて 4 番目の文字から、3 文字分を取り出す
${VAR: -4}hree第 2 パラメータを省略すると`末尾まで’の意
${VAR: -1}e最後の 1 文字を取り出すにはこう

シェルの組み込みコマンド

コマンド効果
:何もしないで終了コード 0 を返す。while : ;do …;done のように無限ループさせるのによく使う。
. filenamefilename で指定されたファイルを読み込んで中に書かれたコマンドを現在の環境で実行する。include のイメージ。
break [n]ループのを抜ける。n を指定すると n レベル外のループを抜ける。
continue [n]ループの次の繰り返し分から実行を継続する。n を指定すると n レベル外のループで実行を継続します。
read [name …]標準入力から 1 行読み込み、最初の単語を最初の name に代入し、2 番目の単語を 2 番目の name に代入します。name が指定されなかったら REPLY に代入される。
exec command [arguments]現在のシェルはこの command に置き換えられます。新しいプロセスは生成されません。exec 以降のスクリプトが実行されることはありません。
exit [n]ステータス n でシェルを終了させる。
return [n]ステータス n で関数を終了する。
export name[=word] …name を環境変数に設定します。word が指定された場合は環境変数 name に word が設定されます。
よく使う構文結果効果
$((1+1))2足し算
$((2-2))0引き算
$((2*2))4掛け算
$((2/2))1割り算
$((7%2))1余り
++num あるいは num++インクリメント
–num あるいは num–デクリメント
文字列分割して配列に入れる

old_ifs=$IFS
IFS=','
declare str='aaa,bbb,ccc'
declare -a record=($str)
IFS=$old_ifs
文字列の検索

declare str1='abcd'
declare str2='cd'
old_ifs=$IFS
IFS="$str2"
declare temp=($str1)
declare -i str1_len=${#str1}
declare -i temp_len=${#temp}
IFS=$old_ifs
if [ "$str1_len" -eq "$temp_len" ]; then
  declare -i result=-1 #見つからなかったら-1
else
  declare -i result=$temp_len # 見つかった場合はその位置
fi
read

データファイルを処理するためのちょっとしたスクリプトを書くのに ruby を使っていたけど,bash でもいろいろできるのね. # (1) パイプを使う

Read more...

bash変数周りのメモ

シェル変数

||0|| プログラム名 ||1 ~ 9|| 第 1 ~9引数 ||@|| 全ての引数。"$@" としたときは “$1” “$2” “$3”… に等しい。 ||*|| 全ての引数。"$*" としたときは “$1 $2 $3…” に等しい。 ||#|| 引数の数 ||?|| 直前に実行したプログラムの終了コード。 ||RANDOM|| ランダムな数字。0~32767 が帰ってくる模様。 ||$|| プロセス ID

Geek なぺーじ:10 の UNIX 小技

変数と「"」の組み合わせは慎重に

特別な理由が無い限り、変数は「"」で囲う方が良いでしょう。
もし、変数名の直後に文字を使いたいのであれば、変数名を「{}」で囲いましょう。
これを忘れてしまうと、別の変数名として扱われてしまいます。
意図しない別の変数名になってしまった場合、大抵はnull値になるでしょう。

$ ls tmp/
a b
$ VAR="tmp/*"
$ echo $VAR
tmp/a tmp/b
$ echo "$VAR"
tmp/*
$ echo $VARa

$ echo "$VARa"

$ echo "${VAR}a"
tmp/*a
$ echo ${VAR}a
tmp/a
$

コマンドのグループ化

Geek なぺーじ:10 の UNIX 小技

Read more...