所以我试图在bash中编写一个简单的脚本,用以下格式(YYYY-dd-mm)询问用户输入日期.不幸的是,我第一步陷入困境,即验证输入的格式是否正确.我尝试使用'日期'没有运气(因为它返回实际当前日期).我想尽可能简化这个.谢谢您的帮助!
我正在尝试编写一个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.
我想我可以重命名文件夹,但是其他脚本已经为他们的工作分配了这些文件夹,因此重命名可能会给我带来更多麻烦.我也可以添加文件夹名称,但每当有人创建文件夹时,我都必须将其名称添加到脚本中,否则它也会被移动.
如何改进此脚本以跳过所有文件夹?
我试图修改用户输入,如果他们输入不正确的日期格式(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) 我试图使用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)
但这正是我正在寻找的.
我已经在这里和其他地方看到了很多问题的答案,这些问题说你可以通过回显变量和管道来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)