シェルスクリプト総合 その29at TECH
シェルスクリプト総合 その29 - 暇つぶし2ch987:デフォルトの名無しさん
19/02/04 11:51:25.97 eH/He5cH0.net
>>981
ありがとう。
「実行可能形式」でないものを実行した場合はシェルスクリプトとして起動されるんだね。
そして俺はマヌケな勘違いをしていたwもっと後の方の処理…つーか違う段階だった。
URLリンク(pubs.opengroup.org)
たとえば「ディレクトリ」や「(/dev/nullのような)正常でないファイル」が
exec函数によって「実行」されるとEACCESが返って失敗するという訳か。
お騒がせしてすまん。

988:デフォルトの名無しさん
19/02/05 21:50:08.24 Ogivq0W50.net
初心者ながら普段のルーチンをshellscriptで解消したく
ソースコードを書いています。
一つつまづいてるので質問させてください。
catコマンドで特定のtxtファイル(シンボリックで作成したエイリアス)を
読み込むのですがNo such file or directoryと出力されます。
terminal上で同じコマンドを実行するとシンボリックリンク先の
txtファイルを読み込み、きちんと動作します。
何か考えられるミスはありますでしょうか?

989:デフォルトの名無しさん
19/02/05 22:40:30.10 DqsJMgF70.net
>>983
readlinkで調べてみたら

990:デフォルトの名無しさん
19/02/05 22:46:53.04 +nC5PPR6H.net
catの前にpwdとかls -lとかls -lLとか調べることはいっぱいある

991:デフォルトの名無しさん
19/02/06 01:03:14.11 RxnZVCFR0.net
取り敢えずsh -xで確認してみれば

992:デフォルトの名無しさん
19/02/06 04:34:28.97 FgEjt1k50.net
>>983
うーん。初心者という言葉をそのまま受け取るなら
フルパス・もしくはそのスクリプトからきちんと認識できる位置の相対パス
で指定してる?
ターミナルの上で
$ cd /tmp
として/tmpディレクトリに移動してからそのコマンドを打ってみるとどうなる?
もう一つは「No such file or directory」がcatの出力でない可能性
ファイル自身をコマンドとして認識される位置に持ってきてない?

993:デフォルトの名無しさん
19/02/06 15:26:28.18 Zn5BTEOaa.net
>>983
cat の打ち間違えやスペースが全角。
ファイル名の文字コード間違い。全角半角だけでなく見た目が同じだがキリル文字の方を使ってるみたいな間違い。
Unicode特有の問題で日本語の平仮名の濁点や半濁点の文字が2文字になっているというのもあるかも知れない。これはよくMacOSとWindows間のファイルをやり取りすると起こる。
画面上は全く同じに見えるファイルが同じディレクトリに2つ並んだりする。しかし文字コードを調べると違っている。

994:デフォルトの名無しさん
19/02/06 21:18:32.76 gnsmOIbq0.net
レスを頂きありがとうございます。
983です。
readlinkは事前に使用して検証してたのですが、
問題なくシンボリック先を辿れていました。
カレントディレクトリが/tmpの状態でコマンドで
打つとこれも問題なく動作します。
文字もシンプルな英語しか使用してないので
どこが間違っているのかわかりません。
教えて頂いたデバッグ方法を参考にもう少し探ってみます。

995:デフォルトの名無しさん
19/02/08 02:22:47.00 GNPN10IV0.net
シェルスクリプト難し過ぎワロタw
もうpythonでいいよ

996:デフォルトの名無しさん
19/02/08 02:56:12.30 OGIJJ+v/0.net
シェルスクリプトで何をすると難しくなるのか?

997:デフォルトの名無しさん
19/02/08 04:05:44.63 0dQnaPPd0.net
シェルスクリプトがややこしいから、
vagrant, chef, Homebrew などは皆、Ruby で作られている

998:デフォルトの名無しさん
19/02/08 04:14:07.33 OGIJJ+v/0.net
その理屈はおかしい
Rubyがややこしいから、
ansibleはPythonで作られてる
と言えてしまう

999:デフォルトの名無しさん
19/02/08 04:16:16.40 OGIJJ+v/0.net
> シェルスクリプトがややこしいから、
>
> vagrant, chef, Homebrew などは皆、Ruby で作られている
>>992はなぜこんな言い方をしてしまったのか?
それは、vagrant, chef, Homebrew などは皆、
本来はシェルスクリプトで作るべきものなんだ
と思っているからなのだろう。

1000:デフォルトの名無しさん
19/02/08 04:55:40.42 TBYY3ugx0.net
brewコマンド自体はシェルスクリプト

1001:デフォルトの名無しさん
19/02/08 08:43:54.60 e7pcoQvna.net
>>993
それは正しいだろ
RubyDSLがややこしいから、ansibleはYAMLを採用した、もまた正しい

1002:デフォルトの名無しさん
19/02/08 08:56:59.76 OGIJJ+v/0.net
その理屈でいうと、rbenvはRubyがややこしいから
シェルスクリプトを使ったということになる

1003:デフォルトの名無しさん
19/02/08 09:01:28.19 OGIJJ+v/0.net
「モジュールが対応してなくてYAMLで設定できないんだけど?」
ansible「シェルスクリプトも使えるで」

なら最初からシェルスクリプトにしろよ(笑)

1004:デフォルトの名無しさん
19/02/08 09:52:00.86 8tcvjc2ZM.net
シェルスクリプト、マヂややこしい…。すぐ頭から抜ける。
もうpythonでいいよ。

1005:デフォルトの名無しさん
19/02/08 10:45:14.94 h1cIDqYw0.net
あの、質問いいですか?

1006:1001
Over 1000 Thread.net
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 138日 22時間 51分 54秒

1007:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch