今回も遊びました。
#!/bin/bash #タイトルとかだすやつ part_output() { local title=$1 echo "○ ${title}" } #説明とかだすやつ 引数ごとに改行するよ description_output() { echo "===========================" local end=$# for par in "$@" do echo $par done echo "===========================" echo "" } temp_output() { local title=$1 local cmd=$2 local param=$3 part_output $title eval $cmd shift 3 while [ "$1" != "" ] do param="${param} ${1}" shift done description_output $param } putText="「梅酒」を「日本酒」に置き換えるよ" temp_output '一行目表示' "sed 1p -n sed_target.txt" "一行目を表示するよ" temp_output '置き換え(一つ)' "sed s/梅酒/日本酒/ sed_target.txt" $putText "ただし一行の1つ目しか置き換わらないよ" temp_output '置き換え(一行内複数置き換え)' "sed s/梅酒/日本酒/ sed_target.txt" $putText "ちゃんと全部変わるよ" temp_output '置き換え(正規表現)' "sed s/\"v.*!$\"/\"<対象です>\"/g sed_target.txt" $putText "正規表現" "「v」から始まって!で終わる一行を置き換え" temp_output 'おまけ' "sed s/!/♡/g sed_target.txt" "半角の「!」しか置き換わらないぞ"
ハマった?部分はコマンドライン引数の一部のみ操作する点に困りました。
shift 3 while [ "$1" != "" ] do param="${param} ${1}" shift done
助言を頂くまでここで数十分ほど止まってました。
[Shift n]とは
コマンドライン引数を指定した数(n)ずらすものらしいです。
test "a" "b" "c"
と試していたとすると何もしていないと$1は"a"ですが、
shiftを行うと$1は"b"になるみたいです。
便利です。
寝よう。