相关疑难解决方法(0)

bash中的用户输入日期格式验证

所以我试图在bash中编写一个简单的脚本,用以下格式(YYYY-dd-mm)询问用户输入日期.不幸的是,我第一步陷入困境,即验证输入的格式是否正确.我尝试使用'日期'没有运气(因为它返回实际当前日期).我想尽可能简化这个.谢谢您的帮助!

validation bash date

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

如何在跳过一些文件和目录时集中移动文件

我正在尝试编写一个shell脚本来移动所有文件,除了以.sh 和结尾的文件.py.我也不想移动目录.

这是我到目前为止所得到的:

cd FILES/user/folder
shopt -s extglob
mv !(*.sh|*.py) MoveFolder/ 2>/dev/null 
shopt -u extglob
Run Code Online (Sandbox Code Playgroud)

这将移动除包含.sh或的所有文件以外的所有文件.py,但所有目录也会移入MoveFolder.

我想我可以重命名文件夹,但是其他脚本已经为他们的工作分配了这些文件夹,因此重命名可能会给我带来更多麻烦.我也可以添加文件夹名称,但每当有人创建文件夹时,我都必须将其名称添加到脚本中,否则它也会被移动.

如何改进此脚本以跳过所有文件夹?

bash shell glob

4
推荐指数
1
解决办法
100
查看次数

Shell REGEX的日期

我试图修改用户输入,如果他们输入不正确的日期格式(YYYY-MM-DD),但我无法弄明白.这是我有的:

while [ "$startDate" != "^[0-9]{4}-[0-9]{2}-[0-9]{2}$" ]
do
  echo "Please retype the start date (YYYY-MM-DD):"
  read startDate
done
Run Code Online (Sandbox Code Playgroud)

regex bash shell date

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

Bash并在变量中替换整个字符串?

我试图使用Bash替换来替换变量中的整个字符串,如果它匹配模式.例如:

pattern="ABCD"

${var/pattern/}
Run Code Online (Sandbox Code Playgroud)

删除(有没有替换)的第一次出现$pattern$var

${var#pattern}
Run Code Online (Sandbox Code Playgroud)

$pattern在开头删除$var

但是,我怎么能删除正则表达式模式"^ABCD$"$var?我可以:

if [ $var == "ABCD" ] ; then 
  echo "This is a match." # or whatever replacement
fi
Run Code Online (Sandbox Code Playgroud)

但这正是我正在寻找的.

regex variables bash replace

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

grep返回码的行为

我已经在这里和其他地方看到了很多问题的答案,这些问题说你可以通过回显变量和管道来grep来对变量进行grep搜索.但是,遵循这些示例的语法对我不起作用.

以下代码失败,每次都回显"发现",无论我正在搜索什么字符串grep.我究竟做错了什么?

TEST='This is a test of the emergency broadcast system.'
echo $TEST | grep 'blah'
if [ $? -eq 0 ]
then
    echo 'not found'
else
    echo 'found'
fi
Run Code Online (Sandbox Code Playgroud)

regex macos bash grep

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

标签 统计

bash ×5

regex ×3

date ×2

shell ×2

glob ×1

grep ×1

macos ×1

replace ×1

validation ×1

variables ×1