Bashで簡単なスクリプトを実行するのに問題があります。スクリプトは次のようになります。
#! /bin/sh
read -p 'press [ENTER] to continue deleting line'
Sudo sed -ie '$d' /home/hpccuser/.profile
./scriptを使用してスクリプトを実行すると、出力は次のようになります。
press [ENTER] to continue deleting line./script: 3: read: arg count
[Sudo] password for user
ターミナルで直接readコマンドを実行し(スクリプトからターミナルにコピーアンドペースト)、正常に動作します。 ENTERがヒットするのを待ちます(一時停止のように)。
スクリプトは#!/bin/sh
ではなく#!/bin/bash
で始まるため、bash拡張機能(read -p
など)が使用できるとは限らず、標準に準拠した機能のみに依存できます。
read
に存在することが保証されている機能のリストについては、 関連する標準ドキュメント を参照してください。
この場合、おそらく2行が必要になります。1つは印刷を実行し、もう1つは読み取りを実行します。
printf 'press [ENTER] to continue deleting...'
read _
これはechoコマンドでも実行できます!:
echo "press [ENTER] to continue deleting line"
read continue
パーティーに遅れているようですが、echo -n "Your Prompt" && sed 1q
POSIX準拠のシェルでトリックを実行します。これにより、プロンプトが出力され、STDINから行が取得されます。
または、その入力を変数に展開することもできます。
echo -n "Your Prompt"
YOUR_VAR=$(sed 1q)