shell命令 $(cd `dirname $0`; pwd);[ "$#" -ne "8" ];exit;declare;`date +%s`

本文介绍Shell脚本的基础知识,包括变量声明、条件判断及退出命令的使用方法,并详细解析了date命令的多种参数,如 +%s 的用途及注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • $(cd `dirname $0`; pwd)

在命令行状态下单纯执行 $ cd `dirname $0` 是毫无意义的。因为他返回当前路径的"."。这个命令写在脚本文件里才有作用,他返回这个脚本文件放置的目录,并可以根据这个目录来定位所要运行程序的相对位置。

  •  declare  

 

+/-:"-"可用来指定变量的属性,"+"则是取消变量所设的属性;
-f:仅显示函数;
r:将变量设置为只读;
x:指定的变量会成为环境变量,可供shell以外的程序来使用;
i:[设置值]可以是数值,字符串或运算式。

 

declare命令用于声明和显示已存在的shell变量。当不提供变量名参数时显示所有shell变量。declare命令若不带任何参数选项,则会显示所有shell变量及其值。declare的功能与typeset命令的功能是相同的。   

  • if [ "$#" -ne "8"  ]; then

 

$# 表示提供到shell脚本或者函数的参数总数;
$1 表示第一个参数。
-ne 表示 不等于

另外:
整数比较
-eq 等于,如:if ["$a" -eq "$b" ]
-ne 不等于,如:if ["$a" -ne "$b" ]
-gt 大于,如:if ["$a" -gt "$b" ]
-ge 大于等于,如:if ["$a" -ge "$b" ]
-lt 小于,如:if ["$a" -lt "$b" ]
-le 小于等于,如:if ["$a" -le "$b" ]
< 小于(需要双括号),如:(("$a" < "$b"))
<= 小于等于(需要双括号),如:(("$a" <= "$b"))
> 大于(需要双括号),如:(("$a" > "$b"))
>= 大于等于(需要双括号),如:(("$a" >= "$b"))

另外:$?是shell变量,表示"最后一次执行命令"的退出状态.0为成功,非0为失败.
  • exit

    Linux exit命令用于退出目前的shell。

    执行exit可使shell以指定的状态值退出。若不设置状态值参数,则shell以预设值退出。状态值0代表执行成功,其他值代表执行失败。exit也可用在script,离开正在执行的script,回到shell。

  • `date +%s`

    GNU的date提供+%s(小写s), 能打印出自1970-01-01 00:00:00到当前时间的秒数.

    这可能大家都不陌生,但有两点需要注意:

    1. %s存在于GNU扩展版本.像在solaris等UNIX上没有该参数.

    2. 1970-01-01 00:00:00指的是UTC时间. (date -u得出来的时间)

    协调世界时,又称世界标准时间,简称UTC
    整个地球分为二十四时区,每个时区都有自己的本地时间。在国际无线电通信场合,为了统一起见,使用一个统一的时间,称为通用协调时(UTC, Universal Time Coordinated)。UTC与格林尼治平均时(GMT, Greenwich Mean Time)一样,都与英国伦敦的本地时相同。

    %a 星期几的简写
    %A 星期几的全称
    %b 月分的简写
    %B 月份的全称
    %c 标准的日期的时间串
    %C 年份的后两位数字
    %d 十进制表示的每月的第几天
    %D 月/天/年
    %e 在两字符域中,十进制表示的每月的第几天
    %F 年-月-日
    %g 年份的后两位数字,使用基于周的年
    %G 年分,使用基于周的年
    %h 简写的月份名
    %H 24小时制的小时
    %I 12小时制的小时
    %j 十进制表示的每年的第几天
    %m 十进制表示的月份
    %M 十时制表示的分钟数
    %n 新行符
    %p 本地的AM或PM的等价显示
    %r 12小时的时间
    %R 显示小时和分钟:hh:mm
    %S 十进制的秒数
    %t 水平制表符
    %T 显示时分秒:hh:mm:ss
    %u 每周的第几天,星期一为第一天 (值从0到6,星期一为0)
    %U 第年的第几周,把星期日做为第一天(值从0到53)
    %V 每年的第几周,使用基于周的年
    %w 十进制表示的星期几(值从0到6,星期天为0)
    %W 每年的第几周,把星期一做为第一天(值从0到53)
    %x 标准的日期串
    %X 标准的时间串
    %y 不带世纪的十进制年份(值从0到99)
    %Y 带世纪部分的十制年份
    %z,%Z 时区名称,如果不能得到时区名称则返回空字符。
    %% 百分号

     

    CST是美国中央时区的缩写。在部分unix操作系统版本里,有时也会代表China Stardard Time,所以有时候会造成混淆

 

转载于:https://www.cnblogs.com/wj94/p/8342699.html

TOOLS_DIR=$(cd $(dirname $0); pwd) USB_AUDIO_FRAME_MS=1 FS_MMC_USB_ENABLE=&#39;USB_MSD_ENABLE=1 AOS_FS_ENABLE=1&#39; CUSTOM_BOARD=&#39;&#39; USB_CFG="USB_AUDIO_SEND_ENABLE=1 USB_AUDIO_SEND_ENABLE=1 USB_AUDIO_VENDOR_ID=0xbe57 USB_AUDIO_PRODUCT_ID=0x0201 " USB_HID_CFG="USB_HID_COMMAND_ENABLE=1 USB_AUDIO_HID_ENABLE=1" TOTA_CFG="TOTA_v2=1 TOTA_CROSS_CHIP_OTA=1 TOTA_CROSS_CHIP_OTA_ROLE_IS_DONGLE=1 OTA_OVER_TOTA_ENABLED=1" OTA_CFG="BES_OTA=1 USB_OTA_ENABLE=1 NEW_IMAGE_FLASH_OFFSET=0x220000 FLASH_REMAP=0 OTA_REBOOT_FLASH_REMAP=0 FREEMAN_OTA_ENABLE=1" for arg in $* do if [ $arg == "master" ];then BUILD_MASTER_1502P=1 fi if [ $arg == "slave" ];then BUILD_SLAVE_1502P=1 fi if [ $arg == "clean" ];then BUILD_CLEAN=1 fi if [ $arg == "all" ];then BUILD_MASTER_1502P=1 BUILD_SLAVE_1502P=1 fi if [ $arg == &#39;gen_lst&#39; ];then GEN_LST=&#39;all lst&#39; fi if [ $arg == &#39;gpio_test&#39; ];then GPIO_TEST=&#39;ULL_AUDIO_GPIO_TEST=1&#39; fi if [ $arg == &#39;aud_dump&#39; ];then AUD_DUMP=&#39;AUDIO_DEBUG=1 OFFLOAD_AUDIO_DUMP=1 VOWLAN_AUDIO_DUMP_DOWNLOAD=1&#39; fi if [ $arg == &#39;96k&#39; ];then SAMPLE_RATE=&#39;LEA_OFFLOAD_96K=1 SPEECH_TX_1MIC_NS_96K=0&#39; fi if [ $arg == "evb_fs_emmc_enable" ];then FS_MMC_USB_CFG=$FS_MMC_USB_ENABLE&#39; EVB_1502P_SDMMC_SUPPORT=1&#39; fi if [ $arg == "rel_sdk" ];then USE_LIB=GEN_LIB=1 RELEASE_SDK=1 BUILD_MASTER_1502P=1 BUILD_SLAVE_1502P=1 BUILD_BES_OTA=1 fi if [ $arg == "is_sdk" ];then USE_LIB=FORCE_TO_USE_LIB=1 IS_SDK=1 fi if [ $arg == "custom" ];then FS_MMC_USB_CFG=$FS_MMC_USB_ENABLE CUSTOM_BOARD=&#39;IS_CUSTOMER_BOARD_1502P=1 BT_EXT_LNA_PA=1 BT_EXT_LNA=1 BT_EXT_PA=1 RXON_IOMUX_INDEX=6 TXON_IOMUX_INDEX=7 BT_RF_TEST_MODULE=1&#39; fi done build_1502p_master_cmd="\ make -j64 T=best1502p_ibrt $GEN_LST $GPIO_TEST BT_NATIVE_SUPPORT=1 BLE=1 WIRELESS_MIC_RX_BLE=1 BT_SERVICE_ENABLE=0 AOB_MOBILE_ENABLED=1 LC3PLUS_SUPPORT=1 AOB_CODEC_CP=1 APP_WIRELESS_MIC=1 \ UTILS_ESHELL_BT_TEST=1 WIRELESS_MIC_RX=1 UTILS_ESHELL_EN=1 BLE_AUDIO_ENABLED=1 $USE_LIB BT_NO_SLEEP=1 CP_FLASH_ACCESS=1 FIVE_MS_FRAME_MODE=1 AUDIO_RESAMPLE=0 \ CODEC_BUFF_FRAME_NUM=$USB_AUDIO_FRAME_MS USB_BUFF_FRAME_NUM=2*$USB_AUDIO_FRAME_MS USB_AUDIO_FRAME_MS=$USB_AUDIO_FRAME_MS WIRELESS_MIC_RX_USB=1 \ LEA_ULL_ENABLE=1 GAF_MUSIC_PLC_ON=1 $AUD_DUMP $SAMPLE_RATE BLE_CONNECTION_MAX=2 LC3_HR_MODE=1 BT_RF_TEST_MODULE=1 WIRELESS_MIC_RX_I2S=1 AF_DEVICE_I2S=1 \ $USB_CFG $USB_HID_CFG $OTA_CFG $TOTA_CFG $CUSTOM_BOARD" build_1502p_slave_cmd="\ make -j64 T=best1502p_ibrt $GEN_LST $GPIO_TEST BT_NATIVE_SUPPORT=1 BLE=1 WIRELESS_MIC_TX_BLE=1 BT_SERVICE_ENABLE=0 AOB_MOBILE_ENABLED=1 LC3PLUS_SUPPORT=1 AOB_CODEC_CP=1 APP_WIRELESS_MIC=1 \ WIRELESS_MIC_TX=1 UTILS_ESHELL_BT_TEST=1 UTILS_ESHELL_EN=1 BLE_AUDIO_ENABLED=1 $USE_LIB BT_NO_SLEEP=1 CP_FLASH_ACCESS=1 FIVE_MS_FRAME_MODE=1 AUDIO_RESAMPLE=0 \ LEA_ULL_ENABLE=1 $FS_MMC_USB_CFG TX_ALGO_PROCESS=1 $SAMPLE_RATE $AUD_DUMP BLE_CONNECTION_MAX=2 LC3_HR_MODE=1 SLAVE_LIB=1 SPEECH_TX_1MIC_NS_48K=0 MIC_EMMC_DUMP_SUPPORT=1 BT_RF_TEST_MODULE=1\ $USB_CFG $USB_HID_CFG $OTA_CFG $TOTA_CFG $CUSTOM_BOARD" build_bes_ota_cmd="\ make T=prod_test/ota_copy CHIP=best1502p GEN_LIB=1 -j" for arg in $* do if [ $arg == "BT_RF_TEST=1" ];then build_1502p_master_cmd+="BT_RF_TEST_MODULE=1 " build_1502p_slave_cmd+="BT_RF_TEST_MODULE=1 " fi done if [[ $BUILD_MASTER_1502P == 1 ]] then $build_1502p_master_cmd 2>build_log_1502p_mas.txt if [[ $? == 0 ]] then echo $build_1502p_master_cmd echo "#######################################" echo "######## master build success! ########" echo "#######################################" else echo $build_1502p_master_cmd echo "#######################################" echo "######## master build failed! #########" echo "#######################################" exit fi fi if [[ $BUILD_SLAVE_1502P == 1 ]] then $build_1502p_slave_cmd 2>build_log_1502p_sla.txt if [[ $? == 0 ]] then echo $build_1502p_slave_cmd echo "#######################################" echo "######## slave build success! ########" echo "#######################################" else echo $build_1502p_slave_cmd echo "#######################################" echo "######## slave build failed! #########" echo "#######################################" exit fi fi if [[ $BUILD_BES_OTA == 1 ]] then $build_bes_ota_cmd if [[ $? == 0 ]] then echo $build_bes_ota_cmd echo "#######################################" echo "######### ota build success! ##########" echo "#######################################" else echo $build_bes_ota_cmd echo "#######################################" echo "######### ota build failed! ###########" echo "#######################################" exit fi fi if [[ $RELEASE_SDK == 1 ]] then release_cmd="$TOOLS_DIR/relsw_wireless_mic_1502p.sh" echo $release_cmd $release_cmd fi
最新发布
07-09
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值