シェルスクリプト総合 その26 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2017/03/20(月) 12:07:26.41
シェルスクリプトの総合スレです。
□お約束
・特記なき場合はBourne Shell(/bin/sh)がデフォルトです。
 bash/zsh/ksh/ashなどに依存する場合は明示しましょう。
 Linuxユーザは/bin/shの正体がbashまたはdashなので特に注意。
 FreeBSDユーザは/bin/shの正体がashなので注意。
 v7 shに一番近くて、現役のshは、OpenSolaris由来のheirloom sh。
  http://src.illumos.org/source/xref/illumos-gate/usr/src/cmd/sh/
  http://heirloom.sourceforge.net/sh.html
・csh/tcshのシェルスクリプトは推奨されません。
 (理由は「csh-whynot」でググれ)
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。
 manや参考リンクを見ましょう。
 aproposないしはman -kでそれらしい単語による簡単な検索もできます。
・シェルで使えるワイルドカード等は正規表現ではありません。
 正規表現の話題はスレ違い(正規表現スレへ)
・シェルスクリプトのことをシェルってゆーな
□初心者へのアドバイス:
・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも
 awkまたはperlの方が適した処理にはそちらを使いましょう。
・知らないコマンドが出てきたらmanを引きましょう。
・思い通りに動かないときは、まずは sh -x でトレースしましょう。
□回答者への注意事項:
・シェルスクリプトでの処理方法を質問しているのに、よくわからずに
 「そういうのはperl使いましょう」と回答するのはやめましょう。
 安易にperlに逃げずにシェルスクリプトで処理するのが頭のいいやり方。
前スレ
シェルスクリプト総合 その25
http://echo.2ch.net/test/read.cgi/unix/1439563321/
2018/03/11(日) 17:07:11.55
>>649
Cに対するコンプレックス同様
Rubyに対するコンプレックスも見苦しい
2018/03/11(日) 22:37:37.82
>>647
returnを省略できる場合に、returnを書くことはないよ
2018/03/12(月) 09:24:03.09
話をぶった切ってすまんが、なるべく依存関係が少ない・かつインタラクティブがある程度機能的なPOSIX互換シェルって何があるかな。
ksh98とかyashとかは使ったことあるけど、ああいう感じでもうちょい開発が盛んなやつとか知らない?
653名無しさん@お腹いっぱい。
垢版 |
2018/03/12(月) 17:35:16.53
連続足し算だけど
#!/bin/bash

while true
do
add=expr 0
read x
add=$(($add + $x))
echo '----------'
echo ' ' $add
done

でできるが
line 5: 0: command not found
1
----------
1
./tasizan-renzoku.bat: line 5: 0: command not found
2
----------
3
./tasizan-renzoku.bat: line 5: 0: command not found

と 気色悪い。 どうすれば正解なの?
2018/03/12(月) 17:39:55.92
expr 0が何も囲われてないが大丈夫か
655名無しさん@お腹いっぱい。
垢版 |
2018/03/12(月) 17:48:20.94
すごいね、以下でエラーがなくなった。

#!/bin/bash
while true
do
add=(expr 0)
read x
add=$(($add + $x))
echo '----------'
echo ' ' $add
done
656名無しさん@お腹いっぱい。
垢版 |
2018/03/12(月) 17:49:39.62
エラーがなくなった が 足し算の合計もなくなった
657名無しさん@お腹いっぱい。
垢版 |
2018/03/12(月) 17:58:34.26
a=0
while read x; do
a=$((a + x))
echo ----------
echo ' ' $a
done
658名無しさん@お腹いっぱい。
垢版 |
2018/03/12(月) 18:02:05.44
ありがとう。 合計を外側で定義することがわからなかった。
こうなると 電卓より便利!
659名無しさん@お腹いっぱい。
垢版 |
2018/03/12(月) 22:12:41.08
【大統領】   Japは我々の家畜  <大イスラエル帝国>  安楽に暮らせる奴隷   【議定書】
http://rosie.5ch.net/test/read.cgi/liveplus/1520856333/l50
2018/03/12(月) 23:38:42.01
また頭がおかしいのがわいてきた
UNIX板荒らさないでほしい
2018/03/13(火) 00:08:45.00
コマンドにローマ字で名前付けるやつは多かれ少なかれキチ成分が入ってる (経験からくる偏見)
2018/03/15(木) 11:45:55.61
>>651
書いといた方がデバッグが楽だぞ
2018/03/15(木) 22:29:00.04
>>662
あんまりそう思ったことないな
2018/03/17(土) 03:48:34.81
for i in `seq -f %02g 1 10`

do
echo ${i}
done


このfor文の中で01の時に1、02の時に2を指定する方法ってありませんか?
簡潔に言うと先頭の0を取ったものを使いたいです
2018/03/17(土) 08:33:32.12
>>662
どうしてデバッグが楽なのか知らんが、
少なくともprintfデバッグすると
終了コードが0に変わるからデバッグしづらいな
2018/03/17(土) 08:52:03.87
>>664
2桁と決まっているなら

echo "${i##0}"


逆にしてこっちのほうが楽だと思うが

for i in $(seq 1 10)
do
printf "%02d\n" $i
done
2018/03/17(土) 08:52:41.56
訂正

printf '%02d\n' "$i"
2018/03/17(土) 20:01:50.50
拡張POSIX準拠らしいけど
echo {1..10} {01..10}

arch linuxだと普通のshでも展開してくれる
2018/03/17(土) 20:09:04.24
ありがとうございます
2018/03/17(土) 21:41:11.21
どういたしまして
2018/03/17(土) 22:02:49.28
>>668
> arch linuxだと普通のshでも展開してくれる
してくれなかったぞ
2018/03/17(土) 23:05:13.47
> 拡張POSIX準拠らしいけど

拡張POSIXってしう仕様があるの?
POSIXを拡張したもので、POSIX非準拠って意味だと思ってたんだけど?
2018/03/18(日) 00:55:12.66
シェルスクリプトってさ、POSIXが標準だけど
実質bashがデファクトスタンダードって考えて良いのかな?
zshやfishを使っていてもbashはインストールされていると考えていい?

いや、あるコマンド作ろうと思ってるんだけど、
基本はPOSIXで動くようにするけど、bashがインストールされていれば
拡張機能が使えるようになる。という仕組みは
ほぼすべての人が拡張機能使えると考えて良いんだろうかなって思って
2018/03/18(日) 01:08:34.19
>>673
bash前提はだめ。
BSD系にはデフォルトで入っていないし、後から入れてもパスが違う。
2018/03/18(日) 01:10:24.11
>>671
ごめん
/bin/shのバージョン確認してみたら
GNU bash, バージョン 4.4.19だった
2018/03/18(日) 01:15:31.51
>>674
いやbash前提じゃないんだ。POSIX シェル前提。POSIX シェルだけで動く。
だけどbashがインストールされていれば拡張機能が使える
その拡張機能っていうのも、本質的な機能じゃなくて
なんていうかな、同じコマンドで実行結果も同じだけど情報が詳細に取れるって感じ

BSD系といってもMacはデフォルトでbashになったのは知ってる。
パスに関してはシバンではなくbashコマンド経由で実行すれば良いと思ってる
(切替可能なようにするのでどっちみちシバンには頼らないと思うし)
2018/03/18(日) 01:16:39.04
>>675
うん、たしかCentOS系はbashへのシンボリックリンクになってたはず
Debian系はdashなので拡張POISXは使えない
2018/03/18(日) 09:35:45.26
POSIX規定外のことをPOSIX拡張って書くのは誤解のもとだからやめた方がいい。
伝統的にシェルにはなくてPOSIXで増えた機能のことをPOSIX拡張とよぶことがあるので、意味が真逆。
2018/03/18(日) 09:54:45.87
可搬性を考えるとPOSIX準拠で書く癖をつけた方が
自分のためになるなあ
680名無しさん@お腹いっぱい。
垢版 |
2018/03/18(日) 12:02:31.33
  ★★★The● best way to eliminate too much gap between rich and poor, is to decide the tax● rate of the progressive tax in the referendum(Root Tax).★★★

  この掲示板(万有サロン)に優●秀な書き込みをして、総額148万円の賞金をゲットしよう!(*^^)v
●  http://jbbs.livedoor.jp/study/3729/ →リンクが不良なら、検索窓に入●れる!
2018/03/18(日) 14:34:15.18
POSIX準拠で書くのは結構つらいので
デファクトスタンダードであるbash機能のみで書くといいよ
2018/03/18(日) 14:55:14.07
>>676
いっその事
ps -p $$ -o comm=
でシェルを見て処理を分けるとか
2018/03/18(日) 15:53:34.91
>>682
見分け方は本質的なところじゃないんで
俺にとってはどうでもいい話だけど、
シェルの判定ではなくて機能チェックで見分けるよ

ブラウザをUserAgentで判定するのではなく
使いたい機能が使えるかどうかで判定するのと似たようなやり方ね

> ps -p $$ -o comm=
ちなみにそれcygwinではエラーになった
684682
垢版 |
2018/03/18(日) 22:58:03.92
>>683
bash や zsh の機能を多く使うならば、その都度機能が動くかどうか判定するより、
起動シェルを見て分岐したほうが手間がないという意味合いで書きました。

cygwin の ps は -o オプションは無いのですね。失礼しました。
freebsd の環境で hoge.sh に ps -p $$ -o comm= と書いて、
/usr/local/bin/bash ./hoge.sh とすると、bash と表示されます。
(debian とかの ps でも ok)

cygwin の /bin/sh は /bin/bash なのでシェルを見るよりその都度使用する機能を判定するほうがよさそうですね。
2018/03/19(月) 06:19:05.05
> > ps -p $$ -o comm=
> ちなみにそれcygwinではエラーになった

マジで!? POSIXでも定義されてるんだけどなぁ
2018/03/19(月) 14:02:30.98
壊れた動画探しに
ffmpeg -i input -f null /dev/null 2>&1 | grep -m 1 -Ii error
ffmpeg -i input -f null /dev/null 2>&1 | grep -q -i error
とやったのですけれど、grepにヒットしてもffmpegの動画読み込みが止まりません。
grepにヒットしたらffmpegを止めるにはどうすればいいのか。
いいアイデアはないですか。
2018/03/19(月) 14:45:03.71
この手が使えるのではないか
https://stackoverflow.com/questions/7178888/grep-q-not-exiting-with-tail-f
2018/03/19(月) 14:52:10.70
ffmpeg -xerror は使えないんだっけ
‘-xerror (global)’
Stop and exit on error
2018/03/20(火) 00:41:07.30
bashがどうしても使えない化石サーバは廃品回収へ
2018/03/20(火) 01:44:18.89
新Mac板から来ました。
カレントディレクトリ内にaacファイルがあれば、mediainfoでHE-AACかLC-AACか調査して、
l-smash muxerを使ってHE-AACとLC-AACでは別のコマンドにてm4aに詰め込みたいです。

以下のままだと、aacが無い場合は
-----
aacファイルはありません.
-----
iTunes MP4 muxing mode
./test.sh: 3 行: 27777 Segmentation fault: 11 muxer -i $file 〜
と表示されてしまいます。

AACファイルがない場合はmuxerのコマンドに進まないようにするにはどう書くといいんでしょうか?

続く
2018/03/20(火) 01:44:57.18
続き

#!/usr/bin/env bash

for file in *.aac; do
if [ -e $file ] ; then
# aacファイルが存在する場合
mediainfo $file | grep '^Format profile *: LC$' >/dev/null 2>&1
#es=$?
else
echo "-----"
# aacファイルが存在しない場合
echo "aacファイルはありません."
fi
#------------------------------------
# HE-AACだった場合
if [ $? = 1 ] ; then
echo "-----"
muxer -i $file?sbr --file-format m4a -o ${file%.aac}.m4a
fi
#------------------------------------
#AACの場合
if [ $? = 0 ] ; then
echo "-----"
muxer -i $file --file-format m4a -o ${file%.aac}.m4a
fi
# .aacで終わるファイル名だけど、HEでもLEでもどちらでも無い場合はどうやるんだろうか
done
2018/03/20(火) 06:10:19.91
$1は本当に直前に実行したのコマンドのステータスしか入らないから注意
ifで比較する前にecho $1で何が入ってるか確かめてごらん
それをふまえて論理構造組み直しな
2018/03/20(火) 08:25:32.50
「AACの場合」の前後の fi と if ... の2行を else に置き換えた上で、mediainfo コマンドの直後に
「HE-AAC だった場合」以降の if/else 文を移動、ではだめかな。

$? はすぐに別のコマンドの結果を格納してしまうので、
. mediainfo ...
. MEDIAINFO_RET=$?
. ...
. if [ $MEDIAINFO_RET = 0 ] ; then ...
みたいにコマンド実行直後に別の変数に回収してみるといいかもね。
2018/03/20(火) 10:06:24.97
>>687,>>689
ありがとう
早速試してみる
2018/03/20(火) 11:43:54.77
>>692
>>693
どうもありがとうございます
試してみます

ググっていたら、同じようにエラーが出る人がいて、testの[]を二重のカッコ[[]]にしてるようでした

今見返したら、es=$?でやってみようと思ってたのに途中になってたっぽいです
2018/03/20(火) 12:10:20.27
for文脱出したいだけならbreak
2018/03/21(水) 02:19:38.65
>>692
>>693
うまくいきました。
どうもありがとうございます。

>>696
書き換え前のスクリプトで試しましたが、こちらもエラーが出ませんでした。
どうもありがとうございます。

オライリーの入門bashには、ループの終了にbreakを使うのは良くないと書いてありました。
それはなぜでしょうか?
2018/03/21(水) 02:54:50.71
>>697
今回みたいなエラー処理の場合はexitした方が良いかもね
2018/03/21(水) 09:34:02.98
>>698
なるほどです
2018/03/21(水) 23:13:42.44
>>690
>>691
>>693

上の場合はmediainfoの終了ステイタスで判断して次にさらにif〜と進んでいるんですが、
LCかHE-AACかそのどっちでも無いかをcace〜muxer〜っとやるほうが確実なのかなと思いました。

その場合、
mediainfo $FILE | grep -E '^Format profile *: LC$|^Format profile *: HE-AAC / LC$'
で出てきた文字列をcaseに渡したいんですが、

case HOGE in
"*: LC" ) muxer〜;;
"*: HE-AAC / LC" ) muxer〜;;
* ) "AACではない";;
ecase

だった場合、HOGEにはどう書けばいいんでしょうか?
2018/03/22(木) 00:30:54.25
>>700
HOGE=$(mediainfo $FILE | grep -E '^Format profile' | sed -E 's/.*: (.*)/\1/‘)

mediainfoの出力をgrepでFormat profileの行だけに絞って
それをsedで必要な箇所だけ置換して変数に入れてる
円マークはバックスラッシュに変換してね
2018/03/22(木) 00:40:17.02
sedじゃなくbashのstring manipulationを使いたければ

HOGE=$(mediainfo “$FILE” | grep -E '^Format profile')
case ${HOGE##*:} in


${HOGE##*:} はHOGE内の文字列を先頭から”:”まで最長一致で取り除く
2018/03/22(木) 00:59:34.53
自己レス

HOGE=`mediainfo $FILE | grep -E '^Format profile *: LC$|^Format profile *: HE-AAC / LC$'`
case $HOGE in

これで大丈夫そうですね
2018/03/22(木) 01:02:19.80
>>701
>>702
どうもありがとうございます
今触れないので、あとでやってみます!
705700
垢版 |
2018/03/22(木) 01:05:43.95
>>700
>>703
>>704
の3つは私です
2018/03/22(木) 01:26:33.69
文字列を1文字ずつ処理するってどうやれば良いのかな?
2018/03/22(木) 01:26:58.52
なるべく速い方法で
2018/03/22(木) 01:40:38.44
先頭の一文字を削除するっていうのはできるんだけどなぁ。
一文字削除したらな、その削除した一文字を取りたいものだ
あ、POSIXの話ね
2018/03/22(木) 01:43:14.01
あ、これでいけるのか

str=abcdefg
last=${a##?}
echo ${str%%$last}
2018/03/22(木) 01:43:57.68
exprが柔軟かな
2018/03/22(木) 02:17:21.19
grep -o .
2018/03/22(木) 02:28:14.30
>>706
速いかどうか分からんけど awk でやるなら

printf 'Hello\nWorld\n' | awk -F '' '{for(i=1;i<=NF;i++) print $i}'

とかかなぁ。grep -Eo '.' ってのもあるけど

for c in $(printf 'Hello\nWorld\n' | grep -Eo '.')
do
echo "$c"
done

あとは fold コマンドとかで。

printf 'Hello\nWorld\n' | fold -w1
2018/03/22(木) 02:37:08.12
間違えてた

str=abcdefg
last=${str##?}
echo ${str%%$last}
2018/03/22(木) 02:39:35.06
>>712
後出しだけど、意外と改行まで1文字として扱うのは大変なんだよね
2018/03/22(木) 02:48:27.27
改行を扱いたい場合は bash か zsh の read かな。

printf 'Hello\nWorld\n' | while read -r -n 1 c;do echo "$c"; done

awk の場合は RS に '\0' をセットすればいいかも

printf 'Hello\nWorld\n' | awk -vRS='\0' -F '' '{for(i=1;i<=NF;i++) print $i}'
2018/03/24(土) 18:09:58.40
公開するようなシェルスクリプトって--helpオプションくらいは付けたほうがいいかな。
問答無用で第一引数をファイル名やらURLやらだと解釈するほうがはるかに楽だし簡潔になるんだけども。
2018/03/24(土) 18:17:47.94
オプションで思い出した。
オプションの解析めんどくせーとか思って他の言語のライブラリを参考に
オプション解析のライブラリを作ろうかと思ってるんだが、
getoptやgetopts程度だと使いやすくなった気がしないし、
作った所でそんなに簡単に書けるようなもんでもなさそうで、
何のためにコレが必要なんだ?って思いなした結果
他言語にあるようなライブラリは、--helpを半自動で
生成してくれるものだと思ってたりする
でももう少しオプションの解析楽にならないかな?
どうすればいいんだろう
2018/03/25(日) 01:51:02.53
ある文字列のハッシュ値を求めたいんですけど
どのLinux/UNIX/FreeBSDでも標準ではいってる
ハッシュ化コマンドって何がありますかね?

それからPOSIX標準コマンド?みたいなものってあるんですか?
どこでも絶対はいっていなければいけないコマンドとか
2018/03/25(日) 02:25:15.03
POSIXってこれ?
http://pubs.opengroup.org/onlinepubs/9699919799/
720700
垢版 |
2018/03/25(日) 02:29:04.48
DATE=`date '+%Y%m%d%H%M'`
TMPDIR='/tmp'
BAKDIR='$TMPDIR/backup_%DATE'

#echo "$DATE"
mkdir $TMPDIR/backup_$DATE
cp -rfp /home/atashi/doc $BAKDIR

これだとcpが出来ないんですがどこが間違えていますか?
2018/03/25(日) 02:29:55.81
ない
722700
垢版 |
2018/03/25(日) 02:34:52.38
最後の行は
cp -rfp /home/atashi/doc $BAKDIR/docです
2018/03/25(日) 02:41:09.90
>>720
3行目の%が間違ってるよね?

あと
4行目でデバッグ用にechoすべきは$BAKDIR
5行目はmkdir “$BAKDIR”
一つ一つ確認したほうがいいよ
2018/03/25(日) 02:44:00.47
>>720
BAKDIR='$TMPDIR/backup_%DATE'

こうじゃない?

BAKDIR='$TMPDIR/backup_$DATE'
2018/03/25(日) 02:44:27.17
あ、かぶったw
726700
垢版 |
2018/03/25(日) 03:03:57.65
>>723
>>724
ほんとだ。
$に直したんですが、

DATE=`date '+%Y%m%d%H%M'`
TMPDIR='/tmp'
BAKDIR='$TMPDIR/backup_$DATE'

echo "$TMPDIR"
#mkdir "$BAKDIR"
echo "$BAKDIR"

を実行すると、
$ ./hoge.sh
/tmp
$TMPDIR/backup_$DATE

になってしまって、ダメでした。

mkdir "$BAKDIR"
を入れると、カレントディレクトリに「$BAKDIR」というフォルダが出来てしまいました
2018/03/25(日) 03:13:28.38
>>726
シェル シングルクォートとダブルクォートの違い 辺りでググってみて
728700
垢版 |
2018/03/25(日) 03:17:52.62
DATE=`date '+%Y%m%d%H%M'`
TMPDIR='/tmp'
BAKDIR="$TMPDIR/backup_$DATE"

echo "$TMPDIR"
mkdir "$BAKDIR"
echo "$BAKDIR"

>>727
出来ました!
どうもありがとうございました。

$ ./test.sh
/tmp
/tmp/backup_201803250316
729700
垢版 |
2018/03/25(日) 04:07:06.26
上の後に
cp -rfp /home/hoge/doc $BAK_DIR/doc
zip -r $BAK_DIR.zip $BAK_DIR
をやるとzipを解凍してみたら
tmpフォルダが出来てその中にbackup_201803250348フォルダが出来ているんですが、
zipを解凍したらbackup_201803250348フォルダが出来るようにするにはどうしたらいいですか?
2018/03/25(日) 09:39:54.86
( cd $TMPDIR ; zip -r backup_$DATE.zip backup_$DATE )
2018/03/25(日) 16:41:32.60
すみません、timeoutコマンドのうまい使い方を教えてください

シェルの中でtimeoutでタイムアウトさせた場合、シェル丸ごとごと落ちてしまいます
タイムアウトさせた上で処理を分岐させて継続して処理させるにはどう制御したら良いのでしょうか

timeout unzip || func_hoge
といった感じで一応回避できたのですが、関数処理が終わると丸ごとプロセスキルされる事には変わらず、綺麗に終わらすことができません
2018/03/25(日) 16:54:52.07
timeoutコマンドを実行したシェルは落ちないよ
$ timeout 1 unzip … としたときに
タイムアウト後にunzipのプロセスがキルされると困るって話??
2018/03/25(日) 17:56:56.40
https://linuxjm.osdn.jp/html/GNU_coreutils/man1/timeout.1.html
コマンドがタイムアウトした場合で、かつ --preserve-status が設定されていない場合、 終了ステータスは 124 になります。
2018/03/25(日) 19:03:35.42
>>732
紛らわしい書き方をしてすみませんでした
シェルスクリプトです

今環境がないので具体的な結果を示せませんが、例えば以下のような処理を実行するとtimeoutがプロセスを落とした(?)メッセージがコンソール出力された後、後続のechoは何も表示されません

#/bin/bash
timeout 1 unzip piyo.zip
if [ $? -ne 0 ]; then
echo hoge
else
echo fuga
fi
echo owata
2018/03/25(日) 19:19:17.27
>>734
んー。こっちでは表示されるけれども…
Script started on 2018年03月25日 19時18分12秒
testuser@debian:~/var/tmp/temp$ cat ./to.sh
#! /bin/sh -

timeout 1 sleep 10
if [ $? -ne 0 ]; then
echo hoge
else
echo fuga
fi
echo owata
testuser@debian:~/var/tmp/temp$ ./to.sh
hoge
owata
testuser@debian:~/var/tmp/temp$ exit
exit

Script done on 2018年03月25日 19時18分30秒
736700
垢版 |
2018/03/25(日) 21:40:43.57
>>730
どうもありがとうございます
2018/03/25(日) 22:27:12.96
ていうか
BAKDIR
がいつから
BAK_DIR
になったんだ
2018/03/25(日) 22:38:36.41
このコードってvalidですよね?
やってること・・・foo関数が最初に呼ばれた時に
OS判定(相当)のことをして、OS毎に処理を切り替えて実行
関数を上書きすることで、次回以降は判定することなく処理実行

#!/bin/sh

foo() {
echo first call

os_type=linux

[ $os_type = linux ] && \
foo() {
echo linux
}

[ $os_type = mac ] && \
foo() {
echo mac
}

foo
}

foo
foo
2018/03/25(日) 22:53:06.94
>>735
なんででしょうね(´;ω;`)
もう一度見直してみます
2018/03/26(月) 08:52:17.43
くだらないtypoしていたに一票。
変だと思ったら、
sh -x スクリプト名
でなにやってるか眺めてみることをオススメする。
勿論、標準エラーを /dev/null に捨てたりするのもナシで。
2018/03/26(月) 11:04:26.16
再確認してきました
実際にはリンク先の48,49行目のログ整形のための処理で問題が起こっているようです
timeout自体の問題ではないので一旦取り下げます、ご協力ありがとうございました

https://pastebin.com/F5QC2Yu5
2018/03/26(月) 11:13:47.05
ワロタw

fail() {
case "$1" in
0)
echo "Info :$2"
;;
1)
echo "Warn :$2"
;;
2)
echo "Error:$2"
;;
3)
echo "Success :$2"
exit 0
;;
4)
echo "Fatal:$2"
exit 1
;;

esac
}
2018/03/26(月) 11:16:57.86
failwww ひどいなw

fail 0 " **** test start ****"

WAIT_SEC=5
time timeout -sKILL ${WAIT_SEC} unzip -t /home/xxxx/crypto.zip
if [ $? -ne 0 ]; then
fail 2 "hage"
else
fail 0 "hoge"
fi

fail 3 "**** test end ****"
2018/03/26(月) 11:20:23.93
おお、是非原因と対処法も書いてってください
2018/03/26(月) 11:22:56.42
failなのにsuccessなのか…
2018/03/26(月) 11:47:56.48
>>744
原因・・・他人のコードを理解せずにパクって、行き当たりばったりにコード書き加えて、終わらすこと
対処法・・・ちゃんとコード読んで理解して無駄なものをなくせ
2018/03/26(月) 12:55:45.54
>>746
全く耳が痛い、実際そういうレベルだけど頑張るよ(´・ω・`)
> >は実際わけわからずに使ってるし
2018/03/27(火) 02:35:57.99
あー、ちくしょ、
ローカルでもリモートでも使うスクリプトを
置くディレクトリ名が決まらない

ローカルだけで使うスクリプト
リモートだけで使うスクリプト
両方で使うスクリプト

どういうディレクトリ構成にしよう
Windowsも考慮したいから
シンボリックリンクは使いたくない
2018/03/27(火) 02:56:48.81
またお前か
2018/03/27(火) 19:30:16.58
>>748
~/share/public/
に置いてる。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況