2016-07-26 3 views
2

多くの場合、ファイルを移動するときは、逆の処理を行う必要があります。だから私の.bashrcの中で私はこの作業コードが含まれていました。関数を1行に定義する方法

rmv() { 
    mv $2/${1##*/} ${1%/*} 
} 

私は、単一のライナーとしてこれを書き込むことはできませんなぜ今、私は疑問に思います。これは私が試したものです:私はそうする場合

rmv() {mv $2/${1##*/} ${1%/*}} 

、私はこのエラーを取得:バッシュ、{

-bash: .bashrc: line 1: syntax error near unexpected token `{mv' 
+0

あなたはそれを、それは* *期待されるトークンを与えてみましたか? –

+0

同じ名前のエイリアスを定義しましたか? – choroba

+2

私の答えからわかるように、私はあなたが間違っていたことを推測することができました。しかし、本当に、私はそれをしなければならないはずだったのはばかげている。実際にあなたが尋ねているエラーを引き起こすコードを投稿するべきです。 – ruakh

答えて

12

は、自動的にその周りに何からの特別な/独立したトークンとして認識されていません。したがって、{mvの間に空白が必要です。さらに

  • }は、コマンドの先頭にする必要があります。したがって、それ自身の行にない場合は、前のコマンドを終了するには;が必要です。
  • パラメータ拡張では必ず二重引用符を使用することをお勧めします。そうしないと、パラメータに空白や特殊文字が含まれていると奇妙な動作が発生する可能性があります。

ので:

rmv() { mv "$2/${1##*/}" "${1%/*}" ; } 
+3

位置変数を引用してください... – Kusalananda

+1

すばらしい、ありがとう!それは実際には ";"私は主に行方不明でした。 – Steffen

関連する問題