shell的${}的用法

以下的内容基本从Shell13问中提取.
1. 截断功能
${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
记忆的方法为:
[list]#是去掉左边, ##最后一个
      %是去掉右边, %%第一个
2. 字符串提取 
单一符号是最小匹配﹔两个符号是最大匹配。
${file:0:5}:提取最左边的 5 个字节:/dir1
${file:5:5}:提取第 5 个字节右边的连续 5 个字节:/dir2
3. 字符串替换
${file/dir/path}:将第一个 dir 提换为 path:/path1/dir2/dir3/my.file.txt
${file//dir/path}:将全部 dir 提换为 path:/path1/path2/path3/my.file.txt
4. 针对不同的变量状态赋值(没设定、空值、非空值):
${file-my.file.txt}: 若$file没有设定,则使用my.file.txt作返回值。(空值及非空值时不作处理)
${file:-my.file.txt}:若$file没有设定或为空值,则使用my.file.txt作返回值。(非空值时不作处理)
${file+my.file.txt}: 若$file设为空值或非空值,均使用my.file.txt作返回值。(没设定时不作处理)
${file:+my.file.txt}:若$file为非空值,则使用my.file.txt作返回值。(没设定及空值时不作处理)
${file=my.file.txt}: 若$file没设定,则使用my.file.txt作返回值,同时将$file 赋值为 my.file.txt。(空值及非空值时不作处理)
${file:=my.file.txt}:若$file没设定或为空值,则使用my.file.txt作返回值,同时将 $file 赋值为 my.file.txt。(非空值时不作处理)
${file?my.file.txt}: 若$file没设定,则将my.file.txt输出至 STDERR。(空值及非空值时不作处理)
${file:?my.file.txt}:若$file没设定或为空值,则将my.file.txt输出至STDERR。(非空值时不作处理)
注意: 
":+"的情况是不包含空值的.
":-", ":="等只要有号就是包含空值(null).

5. 变量的长度
${#file}
6. 数组运算
A=(a b c def)
${A[@]} 或 ${A[*]} 可得到 a b c def (全部组数)
${A[0]} 可得到 a (第一个组数),${A[1]} 则为第二个组数...
${#A[@]} 或 ${#A[*]} 可得到 4 (全部组数数量)
${#A[0]} 可得到 1 (即第一个组数(a)的长度),${#A[3]} 可得到 3 (第四个组数(def)的长度)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 你可以使用以下命令在文件名中随机插入一个数字: ```shell mv filename.txt filename_$RANDOM.txt ``` 其中,$RANDOM 是一个 shell 内置的环境变量,表示一个随机数。这个命令会将原来的文件名 filename.txt 改为 filename_随机数.txt,实现了随机拼接文件名的功能。 ### 回答2: 在Shell脚本中,可以使用$random变量来生成一个随机数。如果要将这个随机数与文件名拼接起来,可以使用以下方法: 假设有一个文件名为"file.txt",我们想要将随机数与文件名拼接起来,可以使用$random和字符串拼接技术来完成。在Shell脚本中,可以使用双引号和变量名进行字符串拼接。 示例代码如下: ``` #!/bin/bash file_name="file.txt" new_file_name="${file_name}_${RANDOM}" echo "新文件名为:$new_file_name" ``` 在上述示例代码中,首先定义了一个变量file_name,存储文件名"file.txt"。然后使用双引号和${RANDOM}将随机数与文件名拼接起来,存储到新的变量new_file_name中。最后,通过echo命令将新的文件名打印出来。 运行上述代码,将会得到类似以下的输出结果: ``` 新文件名为:file.txt_12345 ``` 其中,12345是一个随机生成的数字,每次运行脚本时都会有不同的结果。 这样,我们就成功地将随机数与文件名拼接在一起。 ### 回答3: 使用shell命令可以通过$random变量来生成随机数,并且可以将其与文件名进行拼接。$random是一个内建的shell变量,用于生成0到32767之间的随机整数。 假设我们有一个文件夹中有多个文件需要进行拼接,可以用以下的shell脚本实现: ``` #!/bin/bash # 待拼接的文件夹路径 folder="/path/to/folder" # 拼接文件的目标路径 target="/path/to/target/file.jpg" # 遍历文件夹中的文件 for file in $folder/*; do # 生成随机数后进行拼接 new_filename="${file%.*}${RANDOM}.${file##*.}" # 拷贝文件到目标路径下 cp "$file" "$target/$new_filename" done ``` 在上面的脚本中,我们首先指定了待拼接文件的文件夹路径和拼接文件的目标路径。然后,通过for循环遍历文件夹中的每个文件。对于每个文件,我们使用$RANDOM变量生成一个随机数,并使用字符串操作在原始文件名中插入随机数,形成新的文件名。最后,使用cp命令将拼接后的文件拷贝到目标路径下。 这样,我们就可以通过shell脚本实现使用$random变量来拼接文件名了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值