AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题

问题[for](unix)

Martin Hope
ranjit abraham
Asked: 2022-06-15 03:38:18 +0800 CST

循环遍历作为另一个命令输出的变量

  • 0

你好我在这里学习脚本。我正在尝试使用“for”循环编写一个简单的脚本。

我在一个名为 user 的文件夹中有数百个文件夹。
如果我运行这个命令,我会得到一个需要移动到另一个文件夹的文件夹列表

cat failed | awk -F ":" '/FAILED/ {print $1}' |  uniq

即,任务失败的用户下的文件夹必须移动到 users/failed/failedusers

我目前正在做的是我首先使用创建一个新文件

cat failed | awk -F ":" '/FAILED/ {print $1}' |  uniq > failedusers

然后我使用以下命令移动文件夹

while read line; do cp -r users/$line users/failed; done < failedusers

我的问题是我可以只使用for命令而不是将输出写入另一个文件并使用while read命令来完成它吗?

例如,以某种方式为循环中的变量赋值

faileduser=`cat failed | awk -F ":" '/FAILED/ {print $1}' |  uniq`

然后写类似

mv users/$faileduser user/failed/$faileduser

当我尝试写类似上面的东西时,我遇到了各种各样的错误。

谢谢

shell-script for
  • 1 个回答
  • 32 Views
Martin Hope
John Smith
Asked: 2022-05-28 03:50:11 +0800 CST

我如何并行执行这个嵌套的 for 循环?

  • 0
#!/usr/bin/bash

TARGETS=(
"81.176.235.2"
"81.176.70.2" 
"78.41.109.7" 
)

myIPs=(
"185.164.100.1"
"185.164.100.2"
"185.164.100.3"
"185.164.100.4"
"185.164.100.5"
)

for t in "${TARGETS[@]}"
  do 
    for a in "${myIPs[@]}"
    do 
      echo "${a} ${t} -p 80" >>log 2>&1 &
      echo "${a} ${t} -p 443" >>log 2>&1 &
      wait
    done 
    
done

我希望这段代码从每个 IP 的 echo 命令开始,TARGETS以并行执行它们。同时,该脚本并不意味着同时对多个地址执行回显命令myIPs,因此我wait在内部循环中进行了介绍。我想为echo每个目标在. 换句话说,我想做到这一点(但遗憾的是它不起作用):80443TARGETS

for t in "${TARGETS[@]}"
do &
  for a in "${myIPs[@]}"
  do 
    echo "${a} ${t} -p 80" >>log 2>&1 &
    echo "${a} ${t} -p 443" >>log 2>&1 &
    wait
  done 

done
wait 

然而,因为它会增加我的平均负载太多,我不想要这个::

for t in "${TARGETS[@]}"
do
  for a in "${myIPs[@]}"
  do 
    echo "${a} ${t} -p 80" >>log 2>&1 &
    echo "${a} ${t} -p 443" >>log 2>&1 &
  done 
done
wait 

我怎样才能实现我的目标?

PS 这只是一个更复杂的脚本的片段。我想隔离相关问题,因此使用echo而不是网络命令之一。

bash for
  • 2 个回答
  • 115 Views
Martin Hope
ranjit abraham
Asked: 2022-05-14 23:46:41 +0800 CST

无法弄清楚为什么文件不会复制

  • 1

我正在尝试编写一个程序,我可以重用它来将内容复制到多个目录中。但是对于它的生命,我无法弄清楚为什么程序不起作用并抛出这个错误。

我有一个文件,其中包含我需要复制到的文件夹的名称。

test1
test2
test3

我正在尝试使用以下命令将名为 default.meta 的文件复制到上述每个文件夹中。

while read $line;
do 
cp -r default.meta $line;
done < test

当我运行命令时,我收到以下错误,并且在它的生命周期内我无法弄清楚为什么这不起作用。

cp: missing destination file operand after ‘default.meta’
Try 'cp --help' for more information.
cp: missing destination file operand after ‘default.meta’
Try 'cp --help' for more information.
cp: missing destination file operand after ‘default.meta’
Try 'cp --help' for more information.
cp: missing destination file operand after ‘default.meta’
Try 'cp --help' for more information.

我在这里想念什么?

bash for
  • 1 个回答
  • 62 Views
Martin Hope
newcomers
Asked: 2022-04-03 02:08:23 +0800 CST

如何在循环bash时停止

  • 0
target=${1:-http://web1.com}
while true 
do
    for i in $(seq 10)
    do
    curl $target > /dev/null & 
done

    wait

done

我只是编写编程尤其是 bash 的初学者。我想通过一次发出 10 个 HTTP 请求来训练我的 HTTP 负载平衡。并在达到 15000 时停止发送请求。

我该如何编写代码?谢谢你

bash for
  • 1 个回答
  • 59 Views
Martin Hope
ranjit abraham
Asked: 2022-03-22 22:36:26 +0800 CST

基于另一个文件编辑文件中的特定字符串

  • 0

您好,我有一个名为 users 的文件。例如,在该文件中,我有一个用户列表

user1
user2
user3

现在我有另一个名为 search 的文件,其中有一个名为 owner = user 的特定字符串,例如

owner = user1
random text
random text
owner = user15
random text 
random text 
owner = user2

那么是否可以根据用户文件找到所有用户并将这些用户重命名为 [email protected] ?例如

owner = [email protected]
random text
random text
owner = user15
random text 
random text 
owner = [email protected]

我使用 ack 命令和 cat 命令得到了一些零碎的东西,但我是编程新手,所以我无法获得正确的输出。我想出的是下面,但它并没有真正做我需要的。非常感谢任何帮助。

cat users | xargs -i sed 's/{}/moo/' searches
xargs for
  • 2 个回答
  • 28 Views
Martin Hope
ranjit abraham
Asked: 2022-03-22 21:19:48 +0800 CST

如何从文件夹中删除/重命名扩展名

  • 0

我有几个文件夹,例如 [email protected]、[email protected]、[email protected]。我想将它们重命名为 name1、name2、name3 等。我发现如果它们反之亦然,即 name1、name2、name3 我可以通过运行将其移动到 [email protected]

find . -type d -name "*" -depth 1 | while read d; do  mv "$d" "[email protected]"; done

但是我该如何做相反的事情?[email protected] ==> name1

find for
  • 1 个回答
  • 28 Views
Martin Hope
ranjit abraham
Asked: 2022-03-19 06:09:48 +0800 CST

尝试将值从文件循环到 curl 命令

  • 0

我什至不确定这是否可能。我正在尝试创建一个循环,我可以在其中使用文件中的不同值进行卷曲。

for i in `cat id`;
do curl -X POST 'https:/myurl \
--header 'X-XX-Authorization: XX' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'ACS-Licensing-Ack: XXXX' \
--header 'Authorization: Bearer XXXXX' \
--data-urlencode 'XXID=`find * -name $i`'
done

我得到回应

{"code":"400-bad-request","message":"XX app with ID `find * -name $i` not found"}

如何将我之前捕获的 $i 值放入这个 --data-urlencode 字段?我的 id 文件很简单,它包含几个数字,如下所示。1234 23232 32323 非常感谢任何帮助。谢谢。

这是我的身份证文件。它基本上是一个数字列表

1761
1762
1763
1764
1765

所以我的最终目标是进入一个循环,第一个 curl 请求将去 --data-urlencode 'XXID=1761' 第二个请求将去 --data-urlencode 'XXID=1762',第三个去 --data-urlencode ' XXID=1763' 等

curl for
  • 1 个回答
  • 1150 Views
Martin Hope
gtgt
Asked: 2022-02-07 08:09:06 +0800 CST

将重命名路径目录指定的所有文件的脚本

  • 2

我必须在 Ubuntu 上编写一个脚本,它将路径目录指定的所有文件重命名为大写。我已经找到了一个可以重命名文件的循环,但我不确定如何将路径传递给这个循环。你能帮助我吗?

这是循环:

for f in *; do 
    mv "$f" "$f.tmp"; 
    mv "$f.tmp" "`echo $f | tr "[:lower:]" "[:upper:]"`"; 
done

我试图通过这样的路径

for f in path_to_dir* ...

但它做了什么,它只是以某种方式制作了一个目录 .tmp

shell-script for
  • 2 个回答
  • 358 Views
Martin Hope
Molly_K
Asked: 2022-02-05 06:48:16 +0800 CST

Here-document 有两个变量

  • 1

尝试使用 here-document 的两个变量来生成 bash 脚本列表。我遇到了无法将两个变量正确放入脚本的问题,并且输出文件(只有一个文件)的文件名为cut_cat.sh,基本上代码被解释为 cat 作为文本,而不是函数。我该如何改进呢?

这是在 bash shell 环境中。操作系统是红帽 Linux。

输入文件R2_adaptor包含Sample_ID:CGATATTCG(前半部分是样本 ID,后半部分是要移除的序列)。它们由 分隔:。

    for n in cat ${FA_PATH}/R2_adaptor;
  do first=$(echo $n | cut -d ":" -f 1) 
  second=$(echo $n | cut -d ":" -f 2) 
  cat <<- EOF > ${SCRIPTS}/cut_${first}.sh
    #!/bin/bash
    
    FA_PATH="/home/xxx/test_files"
    
    cutadapt -a TTCCTCCT -A echo ${second} --cores=14 \
    -o ${FA_PATH}/${first}_R1_trim.fastq.gz \
    -p ${FA_PATH}/${first}_R2_trim.fastq.gz \
    ${FA_PATH}/${first}_R1_001.fastq.gz ${FA_PATH}/${first}_R2_001.fastq.gz 
    
    
    EOF
    done

这是 ${FA_PATH}/R2_adaptor文件的示例

Sample2:AGAAGTTT
Sample3:TTGGATAT
Sample4:GTAGTATT
Sample5:ATATATAT
Sample6:AACTTGGC
Sample7:GATGGTGA
Sample8:GTCCCTAT
variable for
  • 1 个回答
  • 59 Views
Martin Hope
Amit
Asked: 2021-09-27 22:51:30 +0800 CST

将值添加到数组并基于该循环

  • 0

我有 3 个文件,如下所示:

CV_REF_DATA_09012021.txt
DB_ONLINE_CL_09012021.txt
DFR_CL_INS_09012021.txt

我想检查文件是否存在于 /NAS/CFG/ 中,然后将其添加到数组中。不需要所有 3 个文件始终都存在。因此,它可以是 1、2 或全部 3 个文件。如果没有文件,脚本应该以同样的方式退出。接下来我想基于数组循环并运行“调用”脚本。

调用脚本也使用文件模式来检查文件计数。下面是调用脚本的代码。

NASFilecnt=`find . -type f -name "${CV_REF_DATA}*.txt" | wc -l`

那么,如何根据上述运行循环。如果有任何疑问,请告诉我。

shell-script for
  • 1 个回答
  • 72 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve