如何使用for循环五次执行带可变用户名密码的isql命令?
没问题,我来给你几种不同环境下的实现方案,你可以根据自己用的系统选合适的:
Bash/Linux/Unix 环境
如果你用的是Linux或类Unix系统的bash shell,有两种简单的写法:
方法一:用两个并行数组
把用户名和密码分别存在两个数组里,循环遍历索引对应取值:
# 定义用户名和密码数组,按顺序一一对应 users=("user1" "user2" "user3" "user4" "user5") passwords=("pass1" "pass2" "pass3" "pass4" "pass5") # 循环执行五次,每次取对应索引的用户和密码 for i in "${!users[@]}"; do isql -U "${users[$i]}" -P "${passwords[$i]}" -S servername done
方法二:用用户密码对列表
把每个用户名和密码用分隔符(比如冒号)连在一起,循环时拆分:
# 定义用户密码对,每一组是"用户名:密码" credentials=( "user1:pass1" "user2:pass2" "user3:pass3" "user4:pass4" "user5:pass5" ) # 遍历每一组,拆分出用户名和密码 for cred in "${credentials[@]}"; do username="${cred%%:*}" # 截取冒号前面的内容作为用户名 password="${cred#*:}" # 截取冒号后面的内容作为密码 isql -U "$username" -P "$password" -S servername done
Windows CMD 环境
如果是Windows的命令提示符(CMD),可以这样写:
@echo off setlocal enabledelayedexpansion :: 定义用户名和密码的数组,索引从0到4 set "users[0]=user1" set "users[1]=user2" set "users[2]=user3" set "users[3]=user4" set "users[4]=user5" set "passwords[0]=pass1" set "passwords[1]=pass2" set "passwords[2]=pass3" set "passwords[3]=pass4" set "passwords[4]=pass5" :: 循环从0到4,每次取对应索引的用户和密码执行命令 for /l %%i in (0,1,4) do ( isql -U !users[%%i]! -P !passwords[%%i]! -S servername )
Windows PowerShell 环境
用PowerShell的话,写法更灵活:
# 定义包含用户密码的哈希表数组 $credentials = @( @{ Username = "user1"; Password = "pass1" }, @{ Username = "user2"; Password = "pass2" }, @{ Username = "user3"; Password = "pass3" }, @{ Username = "user4"; Password = "pass4" }, @{ Username = "user5"; Password = "pass5" } ) # 遍历每一组凭据执行命令 foreach ($cred in $credentials) { isql -U $cred.Username -P $cred.Password -S servername }
小提醒
记得把示例里的user1、pass1这些替换成你实际的用户名和密码,另外如果密码里包含特殊字符(比如空格、&、#),可能需要用引号包裹或者转义,具体可以根据你用的环境调整。
内容的提问来源于stack exchange,提问作者Raj s
相关产品推荐
相关产品推荐

