$ 1変数を設定解除できますか?そうでなければ、どこにも説明が見つかりませんman
。
[root@centos2 ~]# set bon jour
[root@centos2 ~]# echo $1$2
bonjour
[root@centos2 ~]# unset $1
[root@centos2 ~]# echo $1$2
bonjour
[root@centos2 ~]#
編集する:
最後に、すべての位置引数を設定解除するためにman()で見つけたものは次のとおりですman set option double-dash
(manは「unset」という単語を使用します!)。
このオプションの後に引数がない場合、位置引数は設定解除されます。
[root@centos2 ~]# echo $1
[root@centos2 ~]# set bon jour
[root@centos2 ~]# echo $1$2
bonjour
[root@centos2 ~]# set --
[root@centos2 ~]# echo $1$2
[root@centos2 ~]#
@Jeff Schallerの答えはこれを理解するのに役立ちました。
ベストアンサー1
位置パラメータを設定解除することはできませんが、そのパラメータ$2
に移動して以前の$1
値を効果的に削除することはできます$2
。
$ set -- bon jour
$ echo "$1$2"
bonjour
$ shift
$ echo "$1$2" # $2 is now empty (i.e. "unset" or "not set")
jour
このshift
コマンドは、すべての位置パラメーターを1レベル下げます。コマンドライン解析ループ(これはいいえgetopt
/)を使用すると、getopts
通常、値を繰り返しチェックしながら、繰り返しごとに位置パラメータが移動されます$1
。位置パラメータを設定解除したい場合はまれです。
ところで、unset
変数を受け入れます名前、値ではなくunset $1
変数がbon
以前に設定されている場合は、実際に設定が解除されます。