stdinを介してスクリプトに渡されるファイル名を評価して、これをsedコマンドで使用したいと思います。stdin経由でbashスクリプトに渡されるファイル名を評価するには
としてこれを呼び出す#!/bin/bash
eval file="${1:-/dev/stdin}"
echo "$file"
sed -i -r ':a; s%(.*)/\*.*\*/%\1%; ta; /\/\*/ !b; N; ba' "$file"
::次のエラーで
bash callfile < file.txt
結果:
/dev/stdin
sed: couldn't open temporary file /dev/sedSVVTdr: Permission denied
なぜこのコードは、私はファイル名を読み取ることができません現時点では私は、次のコードを持っていますそれにパス?
あなたは 'sed'に'/dev/stdin'でインプレース置換をするようにしているようです。結果はどこに書きますか? – Biffen
'file'を実際の文字列'/dev/stdin'に設定します。Sedは標準入力から読み込むことを意味することは知りません。 –
これはまさに質問です。スクリプトで明示的に設定しなくても、eval 'file =" $ {1: -/dev/stdin} "を"/dev/stdin "ではなく" file.txt "に設定する方法はありますか? – 218