2013-05-07 8 views
7

私は "$$ {x %% *}"をメイクファイルで見ました。これはshの "$ {x %% *}"を意味します。 なぜこのように書かれていますか?

https://unix.stackexchange.com/questions/28994/how-can-a-makefile-detect-whether-a-command-is-available-in-the-local-machine

determine_sum = \ 
     sum=; \ 
     for x in sha1sum sha1 shasum 'openssl dgst -sha1'; do \ 
      if type "$${x%% *}" >/dev/null 2>/dev/null; then sum=$$x; break; fi; \ 
     done; \ 
     if [ -z "$$sum" ]; then echo 1>&2 "Unable to find a SHA1 utility"; exit 2; fi 

checksums.dat: FORCE 
    $(determine_sum); \ 
    $$sum *.org 

また、どのようにグーグルで${x%% *}を検索する ?

+1

Google「bashマニュアルページ」 – Barmar

+0

Google「google bash表現方法」:)「間接指示の別のレベルですべてのCS問題が解決されるかもしれません」 –

答えて

0

${x%% *}は、$x変数の最初の単語以外のすべてを削除するのに便利です。つまり、テキストXXX YYY ZZZがある場合、この構文は最初のスペースの後のすべてを削除します。

いくつかの例:

$ x="aaa abbb" 
$ echo ${x%% *} 
aaa 

$ x="aaa abbb bccc defasdfs" 
$ echo ${x%% *} 
aaa 

同等です:

$ x="aaa abbb_bccc_defasdfs" 
$ echo ${x%%_*} 
aaa abbb 

我々は最初の探し:

$ x="aaa abbb bccc defasdfs" 
$ echo $x | awk '{print $1}' 
aaa 

必ずそれが明確であることを確認するには、の別の例を持ってみましょう_文字で終わりまで削除します。

これらの興味深いコマンドの詳細は、Reference Cards #String Operationsを参照してください。


Googleの質問については、はい、これらの文字は検索エンジンで検索できません。代わりに、SymbolHoundを使用するようお勧めします。

たとえば、querying ${x%% *}は貴重な結果を示します。

+1

http://meta.stackoverflow.com/questions/289671も参照してください。/how-to-search-for-dollar-sign-or-exclamation-mark – tripleee

+0

@tripleee確かに!私はその質問を実際に尋ねました:)このリファレンスで更新してください。 – fedorqui

関連する問題