bash
- 随時追加予定
配列
# 宣言
array1=("r_7_&_O r_10_&_N" "r_8_&_O r_11_&_N" "r_7_&_NZ r_10_&_OE1_OE2" "r_15_&_O r_18_&_N" "r_16_&_O r_19_&_N" "r_18_&_OE1_OE2 r_20_&_NZ" "r_8_&_NZ r_18_&_OE1_OE2")
echo ${array1[@]} # 全要素の参照
echo ${array1[0]} # 1番目の要素の参照
echo the number of pairs ${#array1[@]} # 全要素数の参照
for (( i=0; i < ${#array1[@]}; i++ )) # 全要素に対するループ処理
do
echo $i ${array1[$i]}
done
ヒアドキュメントの中にインデントを含めたい
-
<<-
ハイフンを付ける -
tab
のみ有効(スペースだとうまくいかない)
Appending a minus sign to the << has the effect that leading tabs are ignored. This allows indenting here documents in shell scripts (primarily for alignment with existing indentation) without changing their value:[a]
$ tr a-z A-Z <<- END_TEXT
> one two three
> four five six
> END_TEXT
ONE TWO THREE
FOUR FIVE SIX
This yields the same output, notably not indented.
bashスクリプトの中にgnuplotのスクリプトを埋め込みたい
gnuplot -e "plot sin(x); pause -1"
#!/bin/bash
minval=0 # the result of some (omitted) calculation
maxval=4219 # ditto
gnuplot -persist <<-EOFMarker
set title "Walt pedometer" font ",14" textcolor rgbcolor "royalblue"
set timefmt "%y/%m/%d"
set yrange $minval:$maxval
set xdata time
set pointsize 1
set terminal wxt enhanced title "Walt's steps " persist raise
plot "/home/walt/var/Pedometer" using 1:2 with linespoints
EOFMarker
# rest of script, after gnuplot exits
#!/bin/bash
rm xxx.dat
for i in {1..100}
do
echo $i >> xxx.dat
done
gnuplot -persist << EOF
p "xxx.dat" w l
pause -1
EOF
変数をawkに渡したい
awkの-vオプションを使う
awk -v fn_out1="$outputfile" -v var2="variant 2" '{print $0,fn_out1, var2}' hoge.txt
bashスクリプトの中にawkのコードを埋め込みたい1
#!/bin/bash -eu
inputfile=hoge.txt
################################
# AWK scripts #
################################
read -d '' scriptVariable << 'EOF'
BEGIN {
print "start"
}
{
print $0
}
END {
print "hello"
}
EOF
################################
# End of AWK Scripts #
################################
awk "$scriptVariable" ${inputfile}
-
read
:入力行を単語に分離してシェル変数に格納する2-
-d
:セパレータの指定→ここでは文字列を区切らないように設定しているため,EOFまでのすべての文字列が,シェル変数の$scriptVariableに格納される。
-