シェルCOMMON文2

、シェル変数$(CURDIR),$0,$1,$2,$#の意味を説明します

$(CURDIR):   CURDIR是make的内嵌变量, 为当前目录
$0:Shell本身的文件名 
$1:添加到Shell的第一个参数
$2:添加到Shell的第二个参数
$#:添加到Shell的总参数个数

例:

SRCTREE        := $(CURDIR)    *$(CURDIR)为当前目录,相当于SRCTREE=./ 
MKCONFIG   := $(SRCTREE)/mkconfig  *相当于MKCONFIG=./mkconfig

100ask24x0_config  :   unconfig
@$(MKCONFIG) $(@:_config=) arm arm920t 100ask24x0 NULL s3c24x0
  *实际运行mkconfig 100ask24x0 arm arm920t 100ask24x0 NULL  s3c24x0
  *mkconfig:表示Shell文件名($0)
  *100ask24x0:第一个参数($1)
  *... ... $#:共6个参数,所以$#等于6

二、lnコマンド詳細

LN順(フルネーム:リンク)
  Windowsのショートカットと同様の接続を作成するには、lnコマンド、接続タイプは、デフォルトの接続タイプで、ハードとソフトの接続接続(シンボリックリンク)に分けられ、ハードワイヤードファイル用です。あなたはシンボリックリンクを作成したい場合は、「-s」オプションを使用する必要があります。
  ハードワイヤード:削除または古いファイルの名前を変更する場合は、元のファイルとファイルの間のリンクの利点は、コンテンツとは独立して、その後、この操作は、ハードリンクされたファイル、ハードリンクされたファイルや原稿話すには影響しません。
  ソフト接続(シンボリックリンク)は:あなたが削除したり、古いファイルの名前を変更する場合、ファイルへのソフトリンクはもはや存在し、ソフトリンクの利点は、それがファイル以外の何ものでもないので、それは(ファイルシステムを横断することができるということです参照名ではなく、実際のデータ)。
コマンドパラメータ

-b或--backup:删除,覆盖目标文件之前的备份;
-d或-F或——directory:建立目录的硬连接;
-f或——force:强行建立文件或目录的连接,不论文件或目录是否存在;
-i或——interactive:覆盖既有文件之前先询问用户;
-n或--no-dereference:把符号连接的目的目录视为一般文件;
-s或——symbolic:对源文件建立符号连接,而非硬连接;

例:

cd ./include           *打开子目录include/            
rm -f asm              *删除之前连接名为asm的文件
ln  -s  asm-arm asm    *重新建立一个asm连接文件,指向asm-arm文件(表示选择使用arm架构文件)
//ls -l时可以看到asm -> asm-arm

3を使用する、比較演算子はGTを決定した場合、LT、EQ等

PS:使用するかどうかを決定する場合、ブロックの終わり表す場合、決意の末尾に「Fiの」を埋めるために必要
例:

if [ $ACTION = "add"]
then
        ... ...;
else
     ... ...;
fi

次のように比較整数が使用しました:

//-eq 等于(equal)
if [ "$a" -eq "$b" ]
//-ne不等于(no equal)
if [ "$a" -ne "$b" ]
//-gt大于(greater than)
if [ "$a" -gt "$b" ]
//-ge大于等于
if [ "$a" -ge "$b" ]
//-lt小于(less than)
if [ "$a" -lt "$b" ]
//-le小于等于
if [ "$a" -le "$b" ]
//<小于(在双括号中使用)
(("$a" < "$b"))
//<=小于等于(在双括号中使用)
(("$a" <= "$b"))
//>大于(在双括号中使用)
(("$a" > "$b"))
//>=大于等于(在双括号中使用)
(("$a" >= "$b"))

比較文字列では、以下のものを使用して:

if [ "$a" = "$b" ]          *判断=
if [ "$a" != "$b" ]         *判断!=
  
if [[ "$a" < "$b" ]]        *判断<
if [ "$a" \< "$b" ]         *判断<   注意"<"使用在[ ]结构中的时候需要被转义.
 
if [[ "$a" > "$b" ]]       *判断>
if ["$a" \> "$b" ]          *判断>   注意">"使用在[ ]结构中的时候需要被转义.

[]パラメータは次のとおりです。

-z: 判断字符串长度为0则为真
-n:判断字符串长度非0则为真
-o:或
-a:与<br>-x:可执行<br>-r:可读<br>-w:可写

パラメータの例

*$0~$6分别指向:
* mkconfig 100ask24x0 arm arm920t 100ask24x0 NULL s3c24x0
* $0 $1 $2 $3 $4 $5 $6
*
 
53 if [ -z "$6" -o "$6" = "NULL" ] ; then               *判断$6长度若为0或等于NULL为真
54 ln -s ${LNPREFIX}arch-$3 asm-$2/arch
55 else
56 ln -s ${LNPREFIX}arch-$6 asm-$2/arch         *$6!=0,所以执行else语句, ln -s arch-s3c24x0 asm-arm/arch
                                                                               * ${LNPREFIX}未定义为空,使用软连接使asm-arm/arch指向arch-s3c24x0
                                                                               * arch:architecture,CPU架构,作用是设置CPU架构为arch-s3c24x0 架构
57 fi

おすすめ

転載: www.cnblogs.com/princepeng/p/11578994.html