1行に保存されたコマンドを含むfile.txtがあり(コマンドはコンソールで実行されたときに機能します)、shを使用して1行で実行したいと思います。
cat file.txt | eval
なくなったものありますか?どんな提案がありますか?
私のファイルに多くのコマンド(1行に1つずつ)が含まれていて、1つのコマンド(フル行)だけを実行したい場合はどうすればよいですか?私の最初の考えは次のとおりです。
head -n5 | tail -n1 | eval
ベストアンサー1
eval
標準入力から対応するコマンド文字列を読みません。
eval "$(cat file.txt)"
# or easier, in ksh/bash/zsh
eval "$(<file.txt)"
# usually you cannot be sure that a command ends at the end of line 5
eval "$(head -n 5 file.txt)"
代わりに、コマンドがファイルにある場合は、eval
標準.
またはbash
//を使用できますzsh
。ksh
source
source ./file
(追加が重要です。そうしないと、./
現在のディレクトリにあるものを考慮する前にinsource
を探しますfile
。POSIXモードでは、inが見つからなくても現在のディレクトリは考慮されません。)$PATH
file
bash
file
$PATH
もちろん、ファイルの一部を選択しても機能しません。これは次の方法で行うことができます。
head -n 5 file.txt >commands.tmp
source ./commands.tmp
または(ksh93、zsh、bashを使用):
source <(head -n 5 file.txt)