次のような結果が出た場合echo *
:
file1 file2 file3 ...
私が望むのは、最初の単語を選択することです。どうやって進めますか?
答え1
awkを介してパイプし、最初の単語をエコーさせることができます。
echo * | head -n1 | awk '{print $1;}'
または、文字列を切り取り、最初の単語を選択します。
echo * | head -n1 | cut -d " " -f1
または、sedを介してパイプして最初の単語を除くすべての項目を削除します。
echo * | head -n1 | sed -e 's/\s.*$//'
トリッキーな方を満足させるために追加されました| head -n1
。文字列に改行文字が含まれている場合、| head -n1
重要なコマンドが渡された文字列の最初の単語を選択する前に、最初の行が選択されます。
答え2
posixyシェルがあるとします(/bin/sh
または/bin/bash
これを実行できます)。
all=$(echo *)
first=${all%% *}
この構成${all%% *}
は例です。部分文字列の削除。このメソッドは、%%
変数の右端から最も長い一致(スペースの後に何もない)を削除します。文字列操作について詳しく読むことができます。*
all
ここ。
このソリューションでは、区切り文字が空白であると仮定します。ファイル名でこれを行うと、スペースを含むすべてのファイルが壊れます。
答え3
本当に初めて欲しいと仮定するとファイル名そして初めてではありません。言葉、空白が原因で中断されない方法は次のとおりです。
shopt -s nullglob
files=(*)
printf '%s\n' "${files[0]}"