if echo test | grep '['; then
echo "文字列が見つかりました"
else
case $? in
1) echo "文字列が見つかりません" ;;
2) echo "エラーが発生しました(終了ステータス: $?)" ;;
esac
fi
うううん。素晴らしい。(だそうだ
だが、そうだろうか?
2) の後の$?は必ず 2 になるハズだから、
この組み合わせには不整合の臭いがする。
ちなみに
grepのExit Statusは
grepのステータス
意味
0
一致が見つかりました。
1
一致が見つかりませんでした。
>1
構文エラーが見つかったか、(一致が見つかったとしても) ファイルにアクセスできませんでした。
らしいので、明日にでも、>2が実装されれば、その事象が発生すると先のコードでは何も表示しないのだ。
よって・・・
if echo test | grep '['; then
echo "文字列が見つかりました"
else
case $? in
1) echo "文字列が見つかりません" ;;
2) echo "grepのオプションの構文エラーな気がする" ;;
*) echo "ボクの知らないエラーが発生しました(終了ステータス: $?)" ;;
esac
fi
が良い様な気がする。
今は想定外である( 3とか4など )な結果に対して、デグレードしているのは良くない。(と思う。
とかく、
ソースコードの書き方がよろしくない!
ソースコードが美しくない!
カバレッジテストで通らないコードがある!
な記事の多くには、バグ(あるいはデグレード)が含まれている。
主に経験不足なんだろうけど、そう云う香り(臭いではない)を楽しむのも風流かもしれない。
そもそもシェルファイル内で検索したい文字列をべた書きする事は稀で
WORD= "9999"
TEXT= "9999"
if echo $TEXT | grep $WORD ; then
echo "$WORDが見つかりました"
else
case $? in
1) echo "'$WORD'が見つかりません" ;;
2) echo "'$WORD'検索中にgrepのオプションの構文エラーが起きた気がする" ;;
*) echo "'$WORD'検索中に不明なエラー($?)が発生しました" ;;
esac
fi
の様に書く事が多い。
だって!
上のコードで云えば、grep 9999 と書けば
マジックナンバー扱いになるじゃないですかねぇ~(笑
それにechoの出力に検索したいテキストを埋め込むことも考えに入っていない。
そもそも・・・・・・・・
最初のコードに(終了ステータス: $?)を追記して
if cp from to; then
echo "コピーに成功しました"
else
echo "コピーに失敗しました(終了ステータス: $?)"
fi
# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
/root/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase): [passphraseを入力] ※passphraseはログイン時に使用
Enter same passphrase again: [passphraseを入力]
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:Fyfc0Do9Wux/6uZgjLvM9nCq4mYVaOphgip9bx8I1eE root@xxxxxxxx.xxxxxxxx.local
The key's randomart image is:
+---[RSA 3072]----+
| . .. |
| o o o. |
| ..E ++o |
| .o . o+= |
| . .o S..= . |
|. . +. ....o. |
|.. + .... o =. |
|o . o = +.* .o .|
|. . *oooo*o.++o |
+----[SHA256]-----+
# ssh-copy-id root@192.168.xxx.xxx
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.xxx.xxx's password: [passwordを入力]
Number of key(s) added: 1