• shell基础学习-难点重点学习


    来自shell13问

    -e : 啟用反斜線控制字符的轉換(參考下表)

    -E:關閉反斜線控制字符的轉換(預設如此)

    -n : 取消行末之換行符號(與 -e 選項下的 c 字符同意)

    要取消一個变量,在 bash 中可使用 unset 命令來处理:
    代码: unset A
    for ep:a=bcd

    echo $a

    unset $a

    变量设定方式              str没有设置         str已经设置不管是不是空字符串
    var=${str=expr}     str=expr            str 不变
                                    var=expr           var=$str

    var=${str:=expr}不管str有没有定义,都会被重新定义赋值

    $# 是传给脚本的参数个数

    $0 是脚本本身的名字

    $1 是传递给该shell脚本的第一个参数
    $2 是传递给该shell脚本的第二个参数
    $@ 是传给脚本的所有参数的列表
    $* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9
    $$ 是脚本运行的当前进程ID号
    $? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误

    於上兩個 echo 命令中,你會發現 argument 的部份顯示在你的熒幕, 而換行符
    號則視 -n option 的有無而別。
    很明顯的, 第二個 echo 由於換行符號被取消了,接下來的 shell prompt 就接在
    輸出結果同一行了 ... ^_^
    事實上, echo 除了 -n options 之外, 常用選項還有:
    7 -e : 啟用反斜線控制字符的轉換(參考下表) -E:關閉反斜線控制字符的轉換(預設如此) -n : 取消行末之換行符號(與 -e 選項下的 c 字符同意)
    關於 echo 命令所支援的反斜線控制字符如下表:

    a: ALERT / BELL (從系統喇叭送出鈴聲)

    : BACKSPACE ,也就是向左刪除鍵

    c: 取消行末之換行符號

    E: ESCAPE, 跳脫鍵

    f: FORMFEED,換頁字符

    : NEWLINE,換行字符

    : RETURN,回車鍵

    : TAB, 表格跳位鍵

    v: VERTICAL TAB,垂直表格跳位鍵

    : ASCII 八進位編碼(以 x 開首為十六進位)

    \: 反斜線本身 (表格資料來自 O'Reilly 出版社之 Learning the Bash Shell, 2nd Ed.)

       整数条件表达式,大于,小于,shell里没有> 和< ,会被当作尖括号,只有-ge,-gt,-le,lt

    g表示greator than

    l表示lower than

    for ep:if [100 ge $var];then

    for ep:if [100 ge $var]

    then

    可以认真查看这两句之间的区别

    1 #!/bin/bash
    2 #name:01.sh
    3 echo "print what you want:"
    4 read var
    5 if [ $var = "yes" ]; then//这个地方特别注意的是[]里面的字符必须和这个括弧存在空格
    6 echo "you enter is $var "
    7 else
    8 echo "you have to kill youself"
    9 fi

     ()与[]的区别

     ( ) 將 command group 置于 sub-shell 去执行,称为 nested sub-shell。

    { } 则是在同一个shell 內完成,也称为 non-named command group。

    ${ } 的一些特异功能:
    假設我們定義了一個變量為: file=/dir1/dir2/dir3/my.file.txt
    我們可以用 ${ } 分別替換獲得不同的值:

    ${file#*/}: 拿掉第一條 / 及其左邊的字串: dir1/dir2/dir3/my.file.txt

    ${file##*/}: 拿掉最後一條 / 及其左邊的字串: my.file.txt ${file#*.}: 拿掉第一個 . 及其左邊的字串: file.txt

    ${file##*.}: 拿掉最後一個 . 及其左邊的字串: txt ${file%/*}: 拿掉最後條 / 及其右邊的字串: /dir1/dir2/dir3

    ${file%%/*}: 拿掉第一條 / 及其右邊的字串: (空值)

    ${file%.*}: 拿掉最後一個 . 及其右邊的字串: /dir1/dir2/dir3/my.file

    ${file%%.*}: 拿掉第一個 . 及其右邊的字串: /dir1/dir2/dir3/my
    記憶的方法為: # 是去掉左邊(在鑑盤上 # 在 $ 之左邊) % 是去掉右邊(在鑑盤上 % 在 $ 之右邊)

    ${file:0:5}:提取最左邊的 5 個字?:/dir1 

    ${file/dir/path}: 將第一個 dir 提換為 path: /path1/dir2/dir3/my.file.txt

    ${file//dir/path}: 將全部 dir 提換為 path: /path1/path2/path3/my.file.txt

    一般而言, A="a b c def" 這樣的变量只是將 $A 替換為一個单一的字符串,
    但是改為 A=(a b c def) , 則是將 $A 定义为数组...
    接下來, 再為大家介稍一下 bash 的組數(array)處理方法。
    一般而言, A="a b c def" 這樣的變量只是將 $A 替換為一個單一的字串,
    但是改為 A=(a b c def) , 則是將 $A 定義為組數... bash 的組數替換方法可參考如下方法:

    ${A[@]} 或 ${A[*]} 可得到 a b c def (全部組數)

    ${A[0]} 可得到 a (第一個組數), ${A[1]} 則為第二個組數...

    ${#A[@]} 或 ${#A[*]} 可得到 4 (全部組數數量) $

    {#A[0]} 可得到 1 (即第一個組數(a)的長度),

    ${A[3]} 可得到 3 (第一個組數 (def)的長度)//得到数组A[3]的值

    A[3]=xyz 則是將第 4 個組數重新定义为 xyz




  • 相关阅读:
    Delphi程序设计之惯用法
    有关ADO专题
    钓子程序代源
    delphi函数大集合
    2012暑期川西旅游之第四天(丹巴甲居藏寨小金达维日隆)
    主流F2.8标准变焦镜头信息
    2012暑期川西旅游之第一天(成都海螺沟)
    2012暑期川西旅游之第五天(四姑娘山之双桥沟)
    宾得最小饼干DA 40mm F2.8 Limited[转]
    主流F2.8标准变焦镜头信息
  • 原文地址:https://www.cnblogs.com/haoxing990/p/4626723.html
Copyright © 2020-2023  润新知