[過去ログ] シェルスクリプト総合 その27 (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
254
(1): 名無しさん@お腹いっぱい。 [sage] 2018/06/07(木) 12:21:50.51 AAS
>>248
248(3): 名無しさん@お腹いっぱい。 [sage] 2018/06/07(木) 02:03:34.31 AAS
>>212
for hoge in "$aaa" "$bbb" "$ccc"
"$aaa" "$bbb" "$ccc"は、最初のアイテムを示すだけ(888, 777, 666)で間違い
"${aaa[@]"が正しいもしくはとしたかったのだろうが、だったらforの機能的にも変数をArrayにする必要はないだろう。その記述以下でなんかするのでないなら
aaa/bbb/cccは単なる文字列として、for内で必要となったらArrayに分解すれば簡単に目的は達成するだろう
(てか、配列にするならaaa/bbb/cccなんて個々の変数じゃなくてそれこそそれを配列にすればいいのにと思うけど)

aaa="888 犬 `date +"%Y%m%d"010000 -d last-sunday`"
...
for fuga in "$aaa" "$bbb" "$ccc"
do
hoge=$($fuga)
if [ -e ~/${hoge[1]}_${hoge[2]:0:4}_${hoge[2]:4:2}_${hoge[2]:6:2}.mp4 ]; then
...
ありがとうございます。
実は他の方のレスを見て、関数というものを調べて
ある程度スッキリしたコードにできたのですが
当初自分の頭で考えていた>>212
212(3): 名無しさん@お腹いっぱい。 [sage] 2018/06/06(水) 09:02:34.23 AAS
aaa=(888 犬 `date +"%Y%m%d"010000 -d last-sunday`)
bbb=(777 猫 `date +"%Y%m%d"150000 -d last-Saturday`)
ccc=(666 鳥 `date +"%Y%m%d"000000 -d last-friday`)

for hoge in "$aaa" "$bbb" "$ccc"
do
if [ -e ~/${hoge[1]}_${hoge[2]:0:4}_${hoge[2]:4:2}_${hoge[2]:6:2}.mp4 ]; then
exit 0
else
ffmpeg -i ~/output/${hoge[2]}-${hoge[0]}.aac ~/${hoge[1]}_${hoge[2]:0:4}_${hoge[2]:4:2}_${hoge[2]:6:2}.mp4
fi
done

こんな感じのスクリプト書いたのですが、配列が展開してくれません。
どうすれば変数に入れた配列が機能するでしょうか
アドバイスお願いします。
のようなコードがが動くようにご指摘いただけたのは
非常に助かりました。ありがとうございます。
273: 名無しさん@お腹いっぱい。 [sage] 2018/06/08(金) 01:20:44.78 AAS
>>257,258,254
257(2): 名無しさん@お腹いっぱい。 [sage] 2018/06/07(木) 12:58:55.50 AAS
Arrayひとつを単一の文字列で渡して、受けたとった方がArrayに戻すかなあ
sub-script.sh "${array1[*]}" "${array2[*]}" "${array3[*]}" ...

sub-script.sh:
array1=($1)
array2=($2)
array3=($3)

Arrayのアイテムの内容がIFSに引っかかってたらIFSを書き換える(/同調)するかなあ。よくありそうなアイテムがスペースありとかだったら、アイテムの内容として入ってなさそうなタブにするとか
(IFS=$'\t'; sub-script.sh "${array1[*]}" "${array2[*]}" "${array3[*]}" ...)

sub-script.sh:
array1=($1)
array2=($2)
array3=($3)
(分解時のセパレータとしてはタブもデフォルトIFSに入っているので分解時には特に設定する必要はない)

てか、そんなに配列をばんばん使わない方がいいんじゃねと思わなくもないw
258(1): 名無しさん@お腹いっぱい。 [sage] 2018/06/07(木) 13:38:14.12 AAS
>>255
コマンドライン経由の意味はよくわからないが、
多分ファイルを使うのがいいと思う。

[渡す側]
declare | grep "渡したい変数" > /path/save

[受け取る側]
source /path/save
全部、シリアライズ/デシリアライズのことで、どういうシリアライズ/デシリアライズを使うかでしかなく、まあ、普通はそれしかないわなで終わってることなんだけどね
ちょっとなんか他のスクリプト言語であるのかと気になったので
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.042s