[過去ログ] くだらねえ質問はここに書き込め! Part 234 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
301(1): 2018/12/09(日)11:15 ID:/RuDibjk(1/2) AAS
>>295
空文字列に一致している
改行はパターンの一部ではなく、複数のパターンの区切り
$ echo -n 'abc' | grep -o 'a
b'
a
b
$
外部リンク[html]:pubs.opengroup.org
> The pattern_list's value shall consist of one or more patterns separated by <newline> characters;
302(1): 2018/12/09(日)13:18 ID:/RuDibjk(2/2) AAS
>>298
bashの場合、コマンドを実行するよりも前の時点で
bashが引数に含まれるNULを取り除いている
$ echo ab$'\0'c | hexdump -c
0000000 a b c \n
0000004
なのでbashでは
grep $'\0' は grep '' と同じで
grep ab$'\0'c は grep abc と同じ
zshではNULを含む引数もそのままコマンドに渡しているので違う結果になる
303: 2018/12/09(日)14:31 ID:oLpqFNSA(1) AAS
昔はttyの1番にだけ背景にペンギンの絵とか表示されてたと思うんだけど
これっていつから無くなったの?
KMS導入後?
304(1): 297 2018/12/09(日)19:39 ID:4X3RO9or(3/4) AAS
openssl req -new -key hoge.example.jp.key -out hoge.example.jp.csr < 改行が入っているテキスト
をファイルを使わずにシェルスクリプトにして変数にして読み込ませたいのですが、
STD_IN="JP\nTokyo\nChuo-ku\n(省略)"
openssl req -new -key hoge.example.jp.key -out hoge.example.jp.csr < ${STD_IN}
とやっても、ファイルが見つかりませんと出てしまいました。
変数の入れ方は1行に入れるのか、ヒアドキュメントみたいな形にもできるのか、
< には変数は使えないのでしょうか?
305(1): 2018/12/09(日)20:03 ID:ECj7FB1h(1) AAS
>>304
少し上にも出てたけど
openssl ... <<< ${STD_IN}
306: 2018/12/09(日)20:41 ID:4X3RO9or(4/4) AAS
>>305
ありがとうございます!
bash拡張でこんなのがあるのですね。
307: 2018/12/10(月)00:05 ID:SK07uHh5(1) AAS
>>292
Rubyではそんなことしない。
お前Rubyの勉強したほうがいいぞw
308: 295 2018/12/10(月)01:47 ID:iaZVXIYt(1/2) AAS
>>301-302
そういうことだったんですね
grepにパターンを分割してわたす方法は-eオプションを複数用いるのが
唯一かと思っていましたが、改行区切りでもわたせるんですね
grep $'�n'$'�n'
このようにしても同じことのようですね
ただ
grep $'�n' $'�n'
省4
309: 295 2018/12/10(月)01:48 ID:iaZVXIYt(2/2) AAS
文字間違えました
→ \
310: 295 2018/12/10(月)07:24 ID:rDY5Jm5J(1) AAS
1つ誤解がありましたので訂正します
grep $'\n' $'\n'
とするとスペースの後ろの改行文字自体をファイルとして指定したと
解釈されてエラーになるようです
311: 2018/12/13(木)07:59 ID:BpuyFdNl(1) AAS
age
312: 2018/12/13(木)08:47 ID:YYFyHPut(1/3) AAS
$ echo "
> foo
> bar"
foo
bar
引用符一つ入れると改行できたのね・・・
ヒアストリングも<<<"でできるようだし
echo -eだのprintfだの`cat -`だの色々やってたわ
313(5): 2018/12/13(木)09:47 ID:g4Xg+Gp3(1/5) AAS
[[ -z $hoge ]] や [[ -n $hoge ]]
って必要ですか?
[[ $hoge ]] とか [[ ! $hoge ]] で代用できそうなんですが…
何が違うんでしょ
314(2): 2018/12/13(木)10:41 ID:9d5jxDGh(1/4) AAS
>>313
もし$hogeの値が「-e /dev/null」とかだったらどうするのよ。
315: 2018/12/13(木)11:07 ID:2p8AEIUJ(1/13) AAS
>>314
何も問題ないですよね?
316: 313 2018/12/13(木)11:09 ID:g4Xg+Gp3(2/5) AAS
>>314
自分も試してみましたが、問題ないようです
317(1): 313 2018/12/13(木)12:10 ID:g4Xg+Gp3(3/5) AAS
さらにいろいろ試してみましたが
変数の内容がオプションと解釈されてしまって真偽値に影響がでるケースとして
hoge='-e unknown'
[ $hoge ] || echo null
とやってみるとhogeは空でも未定義でもないのに
nullと表示されてしまい、本来の意図とは違う結果になるようです
ただこれも解決方法があり
[ "$hoge" ] || echo null
とすれば意図したテストができるようです
もとより[[を使えば引用符もいらないみたいですね
省3
318(1): 2018/12/13(木)12:33 ID:2p8AEIUJ(2/13) AAS
>>317
[[ は POSIX非標準。古い新しいではなくbashによって追加された拡張構文
POSIX標準のシェルは対応しない。POSIX標準のシェルには、debianの
デフォルトシェルであるdashやyashやposhがある
どのシェルでも動くようにするならば、[[ は使ってはいけない
319: 313 2018/12/13(木)12:39 ID:g4Xg+Gp3(4/5) AAS
>>318
そうなんですね
じゃあやはりPOSIXの範囲内では[の後に-nや-zを使った方が
変数の内容を意図せずオプションと解釈されてしまう場合でも
エラーになって気づくので安全と言えば安全なのかもしれませんね
うっかり変数を引用符で囲み忘れる場合もあるだろうし
320: 2018/12/13(木)12:47 ID:2p8AEIUJ(3/13) AAS
> じゃあやはりPOSIXの範囲内では[の後に-nや-zを使った方が
俺は使わない。ダブルクォート忘れで困るのは、ここだけじゃない
コマンド呼び出しの、foo "$hoge" "$hage" "$tsuru" "$pika" とかも全部そう。
忘れるとか、そんなもんshellcheckを使えばすぐに解決するんだから気にすることじゃない
そもそもダブルクォートをつけ忘れは、-nや-zを使っても解決しない。
上下前次1-新書関写板覧索設栞歴
あと 682 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.014s