bash循环中的字符串长度

卡尔托扎极客

我正在遍历一个文件夹,并根据文件的长度执行某些条件。我似乎不正确。我评估并在终端中输出字符串的长度。

    echo $file|wc -c gives me the answer of all files in the terminal. 

但是将其合并到循环中是不可能的

    for file in `*.zip`; do
    if [[ echo $file|wc -c ==9]]; then 
    some commands

我要在长度为9个字符的文件上进行操作

米恰尔·菲塔(MichałFita)

试试这个:

for file in *.zip ; do
  wcout=$(wc -c "$file")
  if [[ ${wcout%% *} -eq 9 ]] ; then 
    # some commands
  fi
done

%%变量扩展中运算符将删除所有匹配模式的内容。这是全局模式,不是正则表达式。

与典型程序员的天生好习惯相反==,BASH中运算符比较字符串而不是数字。

另外(在评论之后),您可以:

for file in *.zip ; do
  wcout=$(wc -c < "$file")
  if [[ ${wcout} -eq 9 ]] ; then 
    # some commands
  fi
done

进一步的观察是,如果BASH无法扩展,*.zip因为当前目录中没有ZIP文件,它将将“ * .zip”传递到$file循环中并进行一次迭代。这导致wc命令报告错误因此,建议添加:

if [[ -e ${file} ]] ; then ...

作为预防机制。


注释引出了该解决方案的另一种形式(加上我添加了我的安全机制):

for file in *.zip ; do
  if [[ -e "$file" && (( $(wc -c < "$file") == 9 )) ]] ; then 
    # some commands
  fi
done

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

for循环中的c ++字符串使长度为0

来自分类Dev

Bash(Ubuntu)-while循环中的字符串?

来自分类Dev

Bash-在for循环中获取包含空格的字符串

来自分类Dev

Bash在for循环中运行字符串格式的命令

来自分类Dev

在 bash 的 for 循环中读取字符串数组

来自分类Dev

将数组的字符串元素的长度设置为javascript中for循环中的变量

来自分类Dev

Matlab:比较for循环中的字符串

来自分类Dev

在.each循环中串联字符串

来自分类Dev

字符串与数组在循环中的比较

来自分类Dev

嵌套的for循环中的字符串匹配

来自分类Dev

嵌套 for 循环中的字符串操作

来自分类Dev

for 循环中的字符串编辑

来自分类Dev

在循环中添加输出/字符串

来自分类Dev

返回在 for 循环中创建的字符串

来自分类Dev

计算bash中字符串的长度

来自分类Dev

在bash while循环中解析和回显字符串

来自分类Dev

在while循环中检查BASH字符串是否包含单引号?

来自分类Dev

C#ForEach循环(循环中的字符串声明)

来自分类Dev

在循环中搜索字符串中的字符

来自分类Dev

DOS Batch:从FOR循环中的字符串中删除字符

来自分类Dev

字符串的长度

来自分类Dev

在for循环中将字符串类型转换为Int

来自分类Dev

字符串替换在for循环中不起作用-Java

来自分类Dev

在循环中匹配和分组相似字符串的集合

来自分类Dev

在foreach循环中补充字符串时出错

来自分类Dev

Python在嵌套的for循环中遍历字符串

来自分类Dev

在jQuery循环中获取以某些字符串开头的ID

来自分类Dev

如何在循环中连接字符串?

来自分类Dev

Java While循环中的字符串条件