相关疑难解决方法(0)

用变量支撑扩展?

#!/bin/sh
for i in {1..5}
do
   echo "Welcome"
done
Run Code Online (Sandbox Code Playgroud)

会工作,显示欢迎5次.

#!/bin/sh
howmany=`grep -c $1 /root/file`
for i in {1..$howmany}
do
   echo "Welcome"
done
Run Code Online (Sandbox Code Playgroud)

Doesn't work! howmany would equal 5 as that is what the output of grep -c would display. $1 is parameter 1 which is specific when running the script.

Any ideas?

variables syntax bash variable-expansion

16
推荐指数
5
解决办法
6483
查看次数

for循环用于多个扩展并对每个文件执行某些操作

我正在尝试在bash中编写一个for循环来获取jpg,jpeg,png扩展名的文件,这是我的尝试,但不起作用

for file in "${arg}"/*.{jpg,jpeg,png}; do echo ${arg}-something.jpg > z.txt ; done;
Run Code Online (Sandbox Code Playgroud)

基本上,我想在当前文件夹中获取带有这些扩展名的文件的名称,并对每个文件执行某些操作,然后使用新扩展名输出文件名.

bash

8
推荐指数
2
解决办法
1万
查看次数

如何在 bash 中同时循环多个通配符?

在 bash 中,我编写了一个函数,该函数使用通配符循环遍历具有多个扩展名的目录中的文件,并仅复制这些特定文件(如果存在)。代码片段如下所示:

set -e

pushd ../../../../$3/code/project/common/ > /dev/null
mkdir -p ../$2
shopt -s nullglob

for file in *.gyp; do   cp $file ../$2/; done
for file in *.gypi; do  cp $file ../$2/; done
for file in *.sh; do    cp $file ../$2/; done
for file in *.patch; do cp $file ../$2/; done

popd > /dev/null
Run Code Online (Sandbox Code Playgroud)

我更愿意编写一条for file in x语句,这样我就不必为我想要复制的每个扩展名复制并粘贴这一行。

如何将这四个for语句重写为一个for语句?如果可能的话,我想将*.ext通配符格式保留在其中。

bash shell for-loop wildcard

5
推荐指数
1
解决办法
2128
查看次数

在for循环中获取多个扩展以转换jpg,JPG和jpeg文件

我想将当前目录中的所有jpgs(独立于大写或大写或jpeg扩展名)转换为95%优化的jpgs.但是我没有在JP循环中使用JPG,jpg和jpeg文件正确获取文件:/

#!/bin/bash
PIC=$(ls "$PWD"/*.{jpg,jpeg,JPG})
for i in $PIC
  do
   echo $i
   # convert $i -quality 95 ${i%.*}_resaved.jpg
done
Run Code Online (Sandbox Code Playgroud)

bash shell

3
推荐指数
1
解决办法
1017
查看次数

bash中的for循环通过具有两个特定扩展名的文件

我希望以下循环遍历m4a文件和webm文件。目前,我使用了两个不同的循环,另一个循环只是替换了该循环中的所有m4a。ffmpeg输出的文件也应该删除m4a扩展名(如果它是m4a文件)和webm扩展名(如果它是webm文件)。并将其替换为mp3。(与m4a一样)。我不知道该怎么做,我认为它与正则表达式有关,但是我不知道如何真正使用它们,也没有找到一个好的教程/文档,所以如果您有的话,也请链接它。

for i in *.m4a ; do
        echo "Converting file $converted / $numfiles : $i"
        ffmpeg -hide_banner -loglevel fatal -i "$i" "./mp3/${i/.m4a}.mp3"
        mv "$i" ./done
        converted=$((converted + 1))
done
Run Code Online (Sandbox Code Playgroud)

regex bash

2
推荐指数
1
解决办法
146
查看次数

for循环用于可变多重扩展

如何改变这个:

for file in "$arg"/*.{jpg,jpeg,png} ; do
    echo "$file" > z.txt
done
Run Code Online (Sandbox Code Playgroud)

至:

for file in "$arg1"/*.{$arg2} ; do
    echo "$file" > z.txt
done
Run Code Online (Sandbox Code Playgroud)

因为我将扩展列表作为单个(逗号分隔)参数.上述尝试不起作用.

bash shell glob

2
推荐指数
2
解决办法
202
查看次数

标签 统计

bash ×6

shell ×3

for-loop ×1

glob ×1

regex ×1

syntax ×1

variable-expansion ×1

variables ×1

wildcard ×1