linux - bash 脚本错误 - 为变量赋值

标签 linux bash ubuntu

我正在尝试制作一个小脚本,它将为我提供不带 $2 名字和 $3 姓氏的文件名 $1目录

我有这个代码

#!/bin/bash
TOTFILES=find "$1" -maxdepth 1 -type f -exec basename {} ';' | wc -l
find "$1" -maxdepth 1 -type f -exec basename {} ';' | sort |
    head -n (( TOTFILES-$3 )) | tail -n (( TOTFILES-$3-$2 ))

我的主要问题是我无法将那条长行的输出分配给 TOTFILES。

我想如果我能得到那个值,它就会起作用 (希望如此):)

附言: 不知道有没有用过

(( TOTFILES-$3 ))

对,获取值。

感谢您的快速回答。 现在我遇到了一个新问题;我想 (( )) 不是获取数字的正确方法

./middleFiles: line 5: syntax error near unexpected token `('
./middleFiles: line 5: `find "$1" -maxdepth 1 -type f -exec basename {} ';' | sort | head -n (( TOTFILES-$3 ))  | tail -n (( TOTFILES-$3-$2 ))'

最佳答案

Command substitution分配命令的输出:

TOTFILES=$(find "$1" -maxdepth 1 -type f -exec basename {} ';' | wc -l)

Arithmetic expansion将为您提供 headtail 的参数:

head -n $(( $TOTFILES - $3 ))

关于linux - bash 脚本错误 - 为变量赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27578756/

相关文章:

c - 通过 XBee 从 Arduino 传输数据

django - 域名 url 重定向到 apache2 中的 localhost

PHP 执行和 header 重定向

bash - 如何检测脚本是否正在获取

linux - 使用 sed 搜索并替换配置文件值

regex - sed 正则表达式及其替代方案在 Solaris 上不起作用

mongodb - APIC 在更新架构时无法 GET/apim

linux - 在目录树中查找每个目录中的文件数

c++试图添加Peterson算法以避免共享内存中的竞争条件

php - 将 php 函数转换为 bash 字符串