小编Jea*_*ote的帖子

如何编写一个验证字母数字和空格的正则表达式

我正在编写一个清理用户输入的bash验证函数.

我们的想法是,如果脚本有3个参数,那么这些参数可能只是字母数字值.但是参数可以是用双引号括起来的多个单词,如下所示:

myfunction arg1 arg2 "this is arg3"

所以我基本上想要剥离所有不是字母数字或空格字符的东西.

目前,我有:

validateEntry() { string=$1 clean=${string//[^a-zA-Z0-9\s]/} }

但它似乎没有用.在myfunction arg1 arg2 "this is arg3",它is arg3被剥离了.

我使用此函数的方式是在脚本中,如下所示:

name=$(validateEntry $1)
Run Code Online (Sandbox Code Playgroud)

我需要帮助.

编辑:

我的想法是validateEntry在一个脚本中使用该函数,可以使用3个参数,如下所示:

if [[ "$#" -eq 3 ]]; then
    arg1=$(validateEntry $1)
    arg2=$(validateEntry $2)
    arg3=$(validateEntry $3)
    echo "${arg1}, ${arg2}, ${arg3}."
fi
Run Code Online (Sandbox Code Playgroud)

但是如果我的脚本的第三个参数是this is arg3,$arg3减少到this,即使我直接调用我的函数,使用相同的三个参数,第三个参数是this is arg3

regex bash shell function

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

Bash函数处理目录中不包括目录的所有点文件

我正在寻找创建一个 bash 函数来过滤选定目录中的所有点文件(无目录)。我只需要文件名,而不是完整路径。

目前,我只有这个命令:

find . -maxdepth 1 -type f -print0
Run Code Online (Sandbox Code Playgroud)

打印除目录之外的所有文件。现在我仍然必须排除非点文件。所以我尝试将输出通过管道传递给 grep,如下所示:

find . -maxdepth 1 -type f -print0 | grep "^\."
Run Code Online (Sandbox Code Playgroud)

它似乎没有用。->

Binary file (standard input) matches
Run Code Online (Sandbox Code Playgroud)

你们有一个优雅的解决方案吗?

谢谢!

bash grep find bash-function

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

尝试使用 api/oEmbed 从 Vimeo 上的剪辑获取数据时出现 CORS 问题

我正在使用 fetch 来获取数据。就像这样:

  getClipMetadata = (url) => {
    const endpoint = 'http://www.vimeo.com/api/oembed.json';

    fetch(`${endpoint}?url=${encodeURIComponent(url)}`, { 
      method: 'get',
      cache: 'no-cache', 
      mode: 'cors',
      headers: new Headers({
        'Access-Control-Allow-Origin': '*',
        'Content-Type': 'application/json'
      })
    })
      .then((response) => { return response.json();})
      .then((res) => console.log("async response received", res))
      .catch((err) => console.log("ajax error -> ", err))    
  }
Run Code Online (Sandbox Code Playgroud)

所以我得到的错误是这样的:
Response for preflight is invalid (redirect)

我认为从 Vimeo 的开发者页面来看它看起来很简单。

我究竟做错了什么?

javascript vimeo fetch cors

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

如何限制目录以在其中保留一定数量的文件

我每天都在转储一个 mysql wordpress 数据库作为备份。因为我不想在一年后得到 365 个 .sql 文件,所以我认为只保留过去 30 天的转储文件是不错的。始终保留最后 30 个并自动删除旧的,每天一个。

我希望在 bash 中对此进行编程,作为 cron 工作的一部分。所以我已经有了转储并将文件发送到备份服务器的部分。我只需要添加计数并每天删除最旧的一个片段。

这是我得到的(用户名和 pswd 保存在 .my.cnf 文件中):

now=$(date +'%m-%d-%y')
mysqldump -h mysql.server.com my_database | gzip -9 > ${home}/dbBackups/db_backup.sql.gz
mv ${home}/dbBackups/db_backup.sql.gz ${home}/dbBackups/${now}_db_backup.sql.gz
scp ${home}/dbBackups/${now}_db_backup.sql.gz backup_user@backup.server.com:/home/backup_user/backup.server.com/dbBackups/
Run Code Online (Sandbox Code Playgroud)

有没有人知道如何实现这个功能?

bash shell mysqldump database-backups mysql-backup

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